# Librairies utilisées
library(sf)
library(cartography)
library(mapsf)
# library(corrplot)
# library(cowplot)
# library(MTA)
library(readxl)
library(ggplot2)
library(FactoMineR)
library(factoextra)
library(cluster)
library(reshape)
library(reshape2)
# library(flows)
# NB : Pour le package flows, la version la plus récente est disponible ici :
# remotes::install_github("rCarto/flows") ou # install.packages("mapsf")
# Pour obtenir une version plus ancienne (celle utilisée ici) : https://cran.r-project.org/src/contrib/Archive/flows/
# install.packages("packages/flows_1.1.1.tar.gz", repos=NULL, type="source")
# library(sp)
library(knitr)
# library(condformat) # https://cran.r-project.org/web/packages/condformat/vignettes/introduction.html
# library(units)
# library(stringr)
# library(dplyr)
# library(questionr)
# library(spdep) # Pour les matrices de contiguïté
library(rgeoda) # Pour les matrices de contiguïté
# library(rgdal) # Pour lire fichiers geodatabases
# Liste pour installer les packages si besoin :
# sf cartography mapsf readxl foreign dplyr flextable knitr stringr units condformat forcats ggplot2 rstatix questionr corrplot gtsummary broom GGally effects forestmodel ggeffects labelled cowplot spdep rgeoda
Les données utilisées sont une compilation de données principalement socio-économiques, localisées. La source principale est l’INSEE. Pour plus de détails, cf. le Markdown “Communes nouvelles : préparation des données”. NB : Ont été exclues des analyses l’Outre-mer et la Corse, espaces non concernés par les communes nouvelles.
Les géométries sont ici importées.
geom2011 <- st_read("data/geom.gpkg", layer = "geom2011", quiet = TRUE)
geom_new <- st_read("data/geom.gpkg", layer = "geom_new", quiet = TRUE)
geomfus2011 <- st_read("data/geom.gpkg", layer = "geomfus2011", quiet = TRUE)
geomCN_new <- st_read("data/geom.gpkg", layer = "geomCN_new", quiet = TRUE)
dep <- st_read("data/geom.gpkg", layer = "dep", quiet = TRUE)
# Pour faciliter la cortographie
# ShpDep <- as(dep, "Spatial")
ShpDep <- as_Spatial(dep) # Pose moins de problème
# Métadonnées
# Liste toutes les variables disponiles
# variables_dispo <- as.data.frame(read_excel("data-raw/meta.xlsx", sheet = "ind_target"))
# Liste les variables marquées dans le fichier meta_budgets.xlsx comme nous intéressant
# target <- subset(variables_dispo, variable_selec == "X")
# Import des géométries des arrondissements
# Données transmises par Ludovic Chalonge (suite à une demande de Nicolas Verdier), le 30 août 2023.
# ## Ancienne version en utilisant le package rgdal
# The input file geodatabase
# fgdb <- "data-raw/arrdtv3.gdb"
# # List all feature classes in a file geodatabase
# subset(ogrDrivers(), grepl("GDB", name))
# fc_list <- ogrListLayers(fgdb)
# print(fc_list)
# date_choisie <- "1931"
# # Read the feature class
# arrondissements <- readOGR(dsn=fgdb,layer= paste0("aarrdt", date_choisie))
# projCodes <- make_EPSG() # Lister les différentes projections existant
# selecRgf <- projCodes[grep("RGF", projCodes$note), ] # Sélectionner certaines projections
# ShpDep2 <- spTransform(x = ShpDep, CRSobj = CRS("+init=epsg:2154")) # Transformer un objet dans la projection RGF
st_layers(dsn = "data-raw/arrdtv3.gdb")
date_choisie <- "1931"
arrondissements <- st_read("data-raw/arrdtv3.gdb", layer= paste0("aarrdt", date_choisie))
rm (date_choisie)
plot(arrondissements[1])
arrondissements <- st_transform(x = arrondissements, crs = st_crs(geom2011))
Les données socio-économiques qui décrivent les communes en
géographies 2011 et 2021 sont ici importées. On commence par extraire
les communes ayant participé à la création d’une commune nouvelle,
appelées ici communes fusionnantes (datafus2011), les
communes nouvelles, avec les géométries au 1er janvier 2021 et
caractérisées par les données à la géométrie 2011 agrégées
(dataCN_new), ainsi que les communes, à la géométrie 2011,
qui n’ont pas participé à la création d’une commune nouvelle
(dataNfus2011)
load("data/refdata.Rdata")
# datafus2011 <- subset(df2011, COM_NOUV == "OUI")
# dataCN_new <- subset(df_new, COM_NOUV == "OUI")
# dataNfus2011 <- subset(df2011, COM_NOUV == "NON")
Dans un certain nombre de cas, il sera utile d’avoir, dans un même objet, les données et les géométries. Les données sont ici jointes aux couches géographiques d’intérêt.
geom2011 <- merge(geom2011, df2011, by = "CODGEO")
geom_new <- merge(geom_new, df_new, by = "CODGEO_new")
# geomCN_new <- merge(geomCN_new, dataCN_new, by = "CODGEO_new")
# geomfus2011 <- merge(geomfus2011, datafus2011, by = "CODGEO")
Un certain nombre d’espaces peuvent être étudiés à part : certaines communes nouvelles car elles ont été l’objet d’une enquête qualitative (Bideau (2017), Bideau (2019)), d’autres car elles sont sur des territoires très touchés par les fusions communales. Ces sous-ensembles sont cartographiés dans la section 1.7.
testEdC <- subset (geom2011, CODGEO_new == "61324" | CODGEO_new =="73150" | CODGEO_new == "73006")
testEdCSavoie <- subset (geom2011, CODGEO_new =="73150" | CODGEO_new == "73006")
testNormandie <- subset (geom2011, REG == "23" | REG == "25") # Haute et Basse Normandie
test49 <- subset (geom2011, CODE_DEPT == "49" ) # Département du Maine-et-Loire
testOuest <- subset (geom2011, REG == "23" | REG == "25"| REG == "53"| REG == "52") # Normandies, Bretagne, Pays-de-la-Loire
Le site Cassini a été créé par l’EHESS, permet de retrouver des évolutions très nombreuses concernant les communes françaises.
Lien donné par Nicolas Verdier (juillet 2023) : https://didomena.ehess.fr/concern/data_sets/6395wb092?locale=fr (base en cours d’attribution d’un DOI, possiblement réalisation d’un data paper).
# download.file("https://didomena.ehess.fr/downloads/kd17cw827?locale=fr", "data-raw/temps_long/lieux_cassini_devenus_communes.csv")
# Téléchargement effectué le 6 mars 2023
cassini <- read.csv("data-raw/temps_long/lieux_cassini_devenus_communes.csv",
sep=",", colClasses = "character", head = TRUE, stringsAsFactors = TRUE, fill = TRUE)
# Pour simplifier la suite, on remplace dans la base Cassini les mentions "an3" et "an8" par "1795" et "1800".
# Syntaxe qui nécessite de vérifier que c'est la bonne colonne qu'on modifie :
# colnames(cassini)[30]
colnames(cassini)[30] <- "district_1795"
# colnames(cassini)[31]
colnames(cassini)[31] <- "departement_1795"
# colnames(cassini)[35]
colnames(cassini)[35] <- "pop_1795_info"
# colnames(cassini)[36]
colnames(cassini)[36] <- "pop_1795_val"
# colnames(cassini)[37]
colnames(cassini)[37] <- "pop_1800_info"
# colnames(cassini)[38]
colnames(cassini)[38] <- "pop_1800_val"
# Tentative de liaison entre la base cassini et la base DAC
load("Archives/data_prep 2011-2021(01)/data/refdata.Rdata")
cassini <- merge(cassini, df_new[, c("CODGEO_new", "NbrComFus")], by.x = "commune_mars_2021", by.y = "CODGEO_new")
# Attention, dans la base Cassini, les communes_mars_2021 sont présentes plusieurs fois
# La variable "departement_1999" permet de localiser l'ensemble des communes. Ce qui permet d'isoler certaines parties du territoire
# table(is.na(cassini$commune_mars_2021))
# Pour la commune de Vornay (Cher), la base indique "s" comme département. On remplace par "18".
# cassini$nom_1999[which(cassini$departement_1999 == "s")]
cassini$departement_1999[which(cassini$departement_1999 == "s")] <- 18
# On corrige simplement les départements avec un seul chiffre (1, 2, 3 etc) pour homogénéiser (transformés en 01, 02, 03 etc)
cassini$departement_1999 <- stringr::str_pad(cassini$departement_1999, 2, pad = "0")
print ("Les départements 1999 représentés dans la base Cassini")
## [1] "Les départements 1999 représentés dans la base Cassini"
table(cassini$departement_1999)
##
## 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16
## 510 911 441 269 201 166 386 559 477 504 506 678 126 929 290 459
## 17 18 19 21 22 23 24 25 26 27 28 29 30 31 32 33
## 544 330 339 759 401 408 721 703 419 872 473 310 398 671 697 613
## 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
## 389 375 297 325 618 765 393 332 368 304 231 372 472 448 206 428
## 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
## 695 723 559 294 679 605 268 994 403 705 769 634 1022 502 683 517
## 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
## 279 593 400 318 678 643 421 344 337 15 1001 593 278 373 1017 397
## 82 83 84 85 86 87 88 89 90 91 92 93 94 95
## 272 163 168 336 356 253 569 498 108 210 36 40 49 199
# Dans certains enregistrements, il y a la mention "lac" alors que normalement c'est "lac.". On procède donc au remplacement
table(cassini$pop_1820_info) # Par exemple
##
## adm. ill. lac lac. pop si
## 388 37 8 32 38653 4271
cassini[cassini == "lac"] <- "lac."
# Possible de retirer certains départements
# cassini_reduite <- subset(cassini, departement_1999 != "2A" & departement_1999 != "2B" & departement_1999 != "73" & departement_1999 != "74")
# table(cassini_reduite$departement_1999)
# Tranformation du data.frame cassini en objet spatial grâce au champs "position_cassini"
cassini_pos <- st_sf(
cassini,
geometry = st_as_sfc(cassini$position_cassini),
crs = "EPSG:2154"
)
# Changement de la projection pour correspondre à celle des communes
cassini_pos <- st_transform(x = cassini_pos, crs = st_crs(geom2011))
# Jointure spatiale
# Nous voulons obtenir les informations du polygones dans lequel se trouve chaque point de la géométrie cassini_pos
cassini_pos <- st_join(x = cassini_pos, y = geom2011[, "CODGEO"], join = st_intersects)
# Les dernières colonnes de cassini sont les variables (1 seule ici, CODGEO) de la table des polygones
head(cassini_pos[, c(1:4, ncol(cassini_pos)-1)])
## Simple feature collection with 6 features and 5 fields
## Geometry type: POINT
## Dimension: XY
## Bounding box: xmin: 3926010 ymin: 2549664 xmax: 3966608 ymax: 2573801
## Projected CRS: ETRS89-extended / LAEA Europe
## commune_mars_2021 gid noacass featuretype CODGEO geometry
## 1 01001 25046 60010 clocher 01001 POINT (3928662 2570876)
## 2 01001 25045 40 clocher 01001 POINT (3928602 2573801)
## 3 01002 25047 18174 clocher 01002 POINT (3966608 2554822)
## 4 01004 25048 592 bourg 01004 POINT (3961238 2549664)
## 5 01004 25049 60001 hameau 01004 POINT (3964688 2550963)
## 6 01005 25050 591 clocher 01005 POINT (3926010 2555996)
# On renome la colonne CODGEO pour davantage de clarté
colnames(cassini_pos)[ncol(cassini_pos)-1]
## [1] "CODGEO"
colnames(cassini_pos)[ncol(cassini_pos)-1] <- "CODGEO_2011"
# Problème : il y a plusieurs communes dont on ne repère pas la position ainsi
cassini_prbl_pos <- subset (cassini_pos, is.na(cassini_pos$CODGEO))
# On observe par départements
table(cassini_prbl_pos$departement_1999)
##
## 08 13 17 22 25 29 33 34 44 50 56 57 59 64 66 68 74 80 83 85
## 5 6 9 2 2 6 1 1 3 1 3 14 4 1 2 1 3 2 6 2
# Et cartographiquement
plot(cassini_prbl_pos$geometry)
nrow(cassini_prbl_pos)
## [1] 74
# La très grande majorité de ces communes sont sur les frontières françaises, mais elles ne sont que 74.
# Dans le cas où une part sont liées à des questions sur la Corse
# nrow (subset(cassini_prbl_pos, cassini_prbl_pos$departement_1999 != "2A" & cassini_prbl_pos$departement_1999 != "2B"))
rm(cassini_prbl_pos)
# On joint les données de population à la géométrie 2011
cassini_test <- merge (cassini_pos, df2011[, c("CODGEO", "P09_POP")], by.x = "CODGEO_2011", by.y = "CODGEO")
# On renome pour plus de clarté
colnames(cassini_test)[ncol(cassini_test)-1]
colnames(cassini_test)[ncol(cassini_test)-1] <- "pop_2011_val"
# N'EST PAS ADAPTÉ PUISQUE LES POPULATIONS SONT PRÉSENTES POUR TOUTES LES COMMUNES ET PAS SEULEMENT POUR CELLES QUI SONT ENCORE ACTIVES
Laissé de côté pour l’instant.
# Jointure spatiale
# Nous voulons obtenir les informations du polygones dans lequel se trouve chaque point de la géométrie cassini_pos
cassini_pos <- st_join(x = cassini_pos, y = arrondissements[, 1], join = st_intersects)
# Les dernières colonnes de cassini sont les variables (1 seule ici, CODGEO) de la table des polygones
head(cassini_pos[, c(1:4, ncol(cassini_pos)-1)])
# On renome la colonne CODGEO pour davantage de clarté
# colnames(cassini_pos)[ncol(cassini_pos)-1]
# colnames(cassini_pos)[ncol(cassini_pos)-1] <- "nom_arrond"
Il y a peu de bases de données présentant l’évolution du nombre de communes depuis leur création lors de la Révolution française. En général, la question du changement de périmètre (perte ou acquisition de territoires, les territoires d’outre-rhin, Nice et la Savoie, Alsace-Moselle etc) n’est pas évoquée.
# 1793-1999
# Source : http://cassini.ehess.fr/fr/html/8_glossaire.php?d=BDCarto à la définition du nom "commune"
annees <- c(1793, 1800, 1806, 1876, 1936, 1968, 1975, 1999)
nbr_com <- c(40431, 40345, 40210, 37745, 38014, 37708, 36296, 36565)
# 1876 y compris l’Alsace-Lorraine
graph <- data.frame(annees, nbr_com)
# ajout données 2023 pour voir (sources INSEE, France métropolitaine + oute-mer)
graph[nrow(graph)+1, ] <- c(1982, 36433)
graph[nrow(graph)+1, ] <- c(2012, 36571)
graph[nrow(graph)+1, ] <- c(2023, 34945)
# plot(annees, nbr_com)
ggplot(data=graph, aes(x=annees, y=nbr_com)) +
geom_line() +
labs(title="Évolution du nombre de communes en France", subtitle="1793-2023", x="", y = "", caption="Source : cassini.ehess.fr")
ggplot(data=graph, aes(x=annees, y=nbr_com)) +
geom_line() +
ylim(0, 41000) +
labs(title="Évolution du nombre de communes en France", subtitle="1793-2023", x="", y = "", caption="Source : cassini.ehess.fr")
rm (annees)
Proposition d’une exploitation pour avoir quelques graphiques un peu propres.
# On peut aussi utiliser la colonne "intendances_types"
print ("Les types d'intendances représentés dans la base Cassini")
## [1] "Les types d'intendances représentés dans la base Cassini"
table(cassini$intendances_types)
##
##
## 2
## intendance
## 41322
## intendance,intendance
## 962
## intendance,intendance,intendance
## 21
## intendance,souveraineté étrangère
## 16
## souveraineté étrangère
## 1025
## souveraineté étrangère,intendance
## 26
## souveraineté partagée ou contestée,intendance
## 15
# On décide d'enlever les territoires qui, au départ, étaient au moins en partie sous souveraineté étrangère
cassini_reduite <- subset(cassini, intendances_types != "intendance,souveraineté étrangère" & intendances_types != "souveraineté étrangère" & intendances_types != "souveraineté étrangère,intendance" & intendances_types != "souveraineté partagée ou contestée,intendance")
# On enlève également les territoires perdus en 1870 (Alsace, Moselle)
cassini_reduite <- subset(cassini_reduite, departement_1999 != "57" & departement_1999 != "67" & departement_1999 != "68")
# table(cassini_reduite$departement_1999)
# Test pour ne sélectionner que l'Alsace-Moselle
# cassini_reduite <- subset(cassini, departement_1999 == "57" | departement_1999 == "67" | departement_1999 == "68")
# En l'absence de méta-données détaillées, on choisit de ne s'intéresser qu'aux communes dont la population est renseignée ou simplement lacunaire (devrait être renseignée). On postule que les autres indications désignent des communes n'existant pas à l'époque.
print ("Les types d'informations renseignées pour le recensement de l'an 3 (1794-1795)")
## [1] "Les types d'informations renseignées pour le recensement de l'an 3 (1794-1795)"
table (cassini_reduite$pop_1795_info)
##
## abs. adm. lac. pop si
## 215 31 136 36917 3102
# On cherche les noms des colonnes qui contiennent le motif "_info"
labels_data_pop <- colnames(cassini[grep(pattern = "_info", colnames(cassini), ignore.case = FALSE)])
label <- labels_data_pop [2] # Si besoin pour tests
evol_nbr_com <- data.frame() # Création d'un objet pour récupérer les résultats totaux
evol_nbr_com_reduit <- data.frame() # Création d'un objet pour récupérer les résultats de la base réduite
# Boucle pour exploiter les données date par date
for (label in labels_data_pop) {
annee <- substr(label, start =5, stop = nchar(label)-5) # On repère le n° de l'année en segmentant le label
sous_tableau <- subset(cassini, cassini[, label] == "pop" | cassini[, label] == "lac." | cassini_reduite[, label] == "abs.") # On crée un sous-tableau comptant uniquement les communes dont la population nous intéresse, à l'année donnée
# sous_tableau <- subset(cassini, cassini[, label] == "pop") # Juste avec les populations connues
nbr_com <- nrow(sous_tableau) # On compte le nombre de communes
sous_tableau_reduit <- subset(cassini_reduite, cassini_reduite[, label] == "pop" | cassini_reduite[, label] == "lac." | cassini_reduite[, label] == "abs.") # On crée un sous-tableau comptant uniquement les communes dont la population nous intéresse, à l'année donnée
# sous_tableau_reduit <- subset(cassini_reduite, cassini_reduite[, label] == "pop") # Juste avec les populations connues
nbr_com_reduit <- nrow(sous_tableau_reduit) # On compte le nombre de communes
i <- c(annee, nbr_com) # On compile les résultats totaux
i_reduit <- c(annee, nbr_com_reduit) # On compile les résultats totaux
evol_nbr_com <- rbind(evol_nbr_com, i, stringsAsFactors = FALSE)
evol_nbr_com_reduit <- rbind(evol_nbr_com_reduit, i_reduit, stringsAsFactors = FALSE)
}
# On traite à la main les deux années 2011 et 2021
# Pour 2011, on fait la liste des CODGEO unique de 2021 et on multiplie par leur nombre de communes fusionnantes (donne le nombre de communes en 2011)
# Pas très propre mais pas l'énergie de faire mieux là...
CODGEO_2021 <- as.data.frame(unique(cassini$commune_mars_2021))
colnames(CODGEO_2021) <- "CODGEO_new"
CODGEO_2021_reduit <- as.data.frame(unique(cassini_reduite$commune_mars_2021))
colnames(CODGEO_2021_reduit) <- "CODGEO_new"
# On joint pour avoir le nombre de communes fusionnantes
CODGEO_2021 <- merge(df_new[c("CODGEO_new", "NbrComFus")], CODGEO_2021, by = "CODGEO_new", all.y = TRUE)
CODGEO_2021_reduit <- merge(df_new[c("CODGEO_new", "NbrComFus")], CODGEO_2021_reduit, by = "CODGEO_new", all.y = TRUE)
# Pour les communes non fusionnantes, on indique qu'il y en a une
CODGEO_2021$NbrComFus[is.na(CODGEO_2021$NbrComFus)] <- 1
CODGEO_2021_reduit$NbrComFus[is.na(CODGEO_2021_reduit$NbrComFus)] <- 1
i_2011 <- c(2011, sum(CODGEO_2021$NbrComFus))
i_2011_reduit <- c(2011, sum(CODGEO_2021_reduit$NbrComFus))
evol_nbr_com <- rbind(evol_nbr_com, i_2011)
evol_nbr_com_reduit <- rbind(evol_nbr_com_reduit, i_2011_reduit)
# Pour 2021, on liste simplement le nombre de CODGEO uniques de 2021 pour chacun des groupe
i_2021 <- c(2021, length(unique(cassini$commune_mars_2021)))
i_2021_reduit <- c(2021, length(unique(cassini_reduite$commune_mars_2021)))
evol_nbr_com <- rbind(evol_nbr_com, i_2021)
evol_nbr_com_reduit <- rbind(evol_nbr_com_reduit, i_2021_reduit)
colnames (evol_nbr_com) <- c("annees", "nbr_com")
colnames (evol_nbr_com_reduit) <- c("annees", "nbr_com")
evol_nbr_com$base <- "tout"
evol_nbr_com_reduit$base <- "tjr_fr"
evol_nbr_com <- rbind(evol_nbr_com, evol_nbr_com_reduit)
# evol_nbr_com[c(1,2), 1] <- c(1795, 1800) # On modifie l'intitulé pour faciliter la représentation graphique
evol_nbr_com$annees[evol_nbr_com$annees == "an3"] <- 1795
evol_nbr_com$annees[evol_nbr_com$annees == "an8"] <- 1800
evol_nbr_com[,1] <- as.numeric(evol_nbr_com[,1]) # On passe en numérique pour faciliter la représentation
evol_nbr_com[,2] <- as.numeric(evol_nbr_com[,2]) # Si on veut faire une seule colonne
ggplot(data=evol_nbr_com, aes(x=annees, y=nbr_com, group=base)) +
geom_line(aes(group = base, linetype = base)) +
scale_linetype(name = "Périmètre", labels = c("Territoires toujours français", "Toute base Cassini")) +
scale_x_continuous (breaks = seq(1780, 2030, 20)) +
labs(title="Évolution du nombre de communes", subtitle="1795-2021", x="", y = "", caption="Sources : cassini.ehess.fr, INSEE")
ggplot(data=evol_nbr_com, aes(x=annees, y=nbr_com, group=base)) +
geom_line(aes(group = base, linetype = base)) +
scale_linetype(name = "Périmètre", labels = c("Territoires toujours français", "Toute base Cassini")) +
ylim(0, 41000) +
labs(title="Évolution du nombre de communes", subtitle="1795-2021", x="", y = "", caption="Sources : cassini.ehess.fr, INSEE")
rm(label, annee, sous_tableau, nbr_com, i, nbr_com_reduit, sous_tableau_reduit, i_reduit, i_2021, i_2021_reduit, CODGEO_2021, CODGEO_2021_reduit, i_2011, i_2011_reduit)
La base Cassini est très riche, mais elle reste tributaire des sources, parfois peu fiables. Ainsi, les données indiquées comme “An 3” (1794-1795) peuvent être considérées comme peu fiables. Nous les retirons donc de l’analyse.
cassini <- subset(cassini, select= -c(pop_1795_info, pop_1795_val))
labels_data_pop <- colnames(cassini[grep(pattern = "_info", colnames(cassini), ignore.case = FALSE)])
# num <- 3
# On s'intéresse à un recensement, qui n'est pas le premier car il va falloir regarder le recensement précédent également
# On repère ce recensement par sa place dans la liste des recensements
for (num in 2:length(labels_data_pop)) {
annee <- substr(labels_data_pop[num], start =5, stop = nchar(labels_data_pop[num])-5) # On repère le n° de l'année en segmentant le label
annee_preced <- substr(labels_data_pop[num-1], start =5, stop = nchar(labels_data_pop[num-1])-5) # On repère le n° de l'année en segmentant le label
sous_tableau <- cassini_pos[, labels_data_pop[c(num-1, num)]]
colnames(sous_tableau) <- c("situation_avant", "date_ref", "geometry") # On renomme les colonnes
# On indique si la commune existe ou non à la date de référence
sous_tableau$date_ref[sous_tableau$date_ref == "pop" | sous_tableau$date_ref == "lac." | sous_tableau$date_ref == "abs."] <- "Existante"
sous_tableau$date_ref[sous_tableau$date_ref != "Existante"] <- "Inexistante"
# table(sous_tableau$date_ref)
# On indique si la commune existe ou non à la date précédente
sous_tableau$situation_avant[sous_tableau$situation_avant == "pop" | sous_tableau$situation_avant == "lac." | sous_tableau$situation_avant == "abs."] <- "Existante"
sous_tableau$situation_avant[sous_tableau$situation_avant != "Existante"] <- "Inexistante"
# table(sous_tableau$situation_avant)
sous_tableau$evol_situation[sous_tableau$situation_avant == "Existante" & sous_tableau$date_ref == "Existante"] <- "Perdure"
sous_tableau$evol_situation[sous_tableau$situation_avant == "Existante" & sous_tableau$date_ref == "Inexistante"] <- "Disparition"
sous_tableau$evol_situation[sous_tableau$situation_avant == "Inexistante" & sous_tableau$date_ref == "Existante"] <- "Apparition"
sous_tableau$evol_situation[sous_tableau$situation_avant == "Inexistante" & sous_tableau$date_ref == "Inexistante"] <- "Inexistante"
table(sous_tableau$evol_situation)
noms_modalites <- c(paste0("Apparition (", sum(sous_tableau$evol_situation == "Apparition"),")"), paste0("Disparition (", sum(sous_tableau$evol_situation == "Disparition"),")"))
sous_tableau$pr_carto[sous_tableau$evol_situation == "Apparition"] <- noms_modalites[1]
sous_tableau$pr_carto[sous_tableau$evol_situation == "Disparition"] <- noms_modalites[2]
table(sous_tableau$pr_carto)
plot(ShpDep, col = "grey", border = "white", axes = FALSE) # Fond de carte
# Carte choroplèthe en fonction de la superficie moyenne des communes dans le département
typoLayer(sous_tableau, var = "pr_carto",
colNA = NA,
add=TRUE,
legend.values.order = noms_modalites,
col = c("red", "blue"),
legend.pos = "topleft",
legend.title.txt = "Situation des communes\nconnaissant un changement")
layoutLayer(title = paste0("Les communes connaissant un changement entre ", annee_preced, " et ", annee), coltitle = "black",
sources = "Sources : INSEE, IGN, Cassini.", scale = NULL,
author = "G. Bideau", frame ="", col = NA)
}
liste_dep <- sort(unique (cassini$departement_1999))
num_dep <- 21
# Création d'un tableau pour accueillir les données de l'ensemble des départements
evol_deps <- data.frame()
for (num_dep in liste_dep) {
cassini_reduite <- subset(cassini, departement_1999 == num_dep)
nom_dep <- dep$LIBELLE[dep$CODE_DEPT == num_dep]
evol_nbr_com_reduit <- data.frame() # Création d'un objet pour récupérer les résultats de la base réduite
# label <- labels_data_pop[2]
# Boucle pour exploiter les données date par date
for (label in labels_data_pop) {
annee <- substr(label, start =5, stop = nchar(label)-5) # On repère le n° de l'année en segmentant le label
sous_tableau_reduit <- subset(cassini_reduite, cassini_reduite[, label] == "pop" | cassini_reduite[, label] == "lac." | cassini_reduite[, label] == "abs.") # On crée un sous-tableau comptant uniquement les communes dont la population nous intéresse, à l'année donnée
# sous_tableau_reduit <- subset(cassini_reduite, cassini_reduite[, label] == "pop") # Juste avec les populations connues
nbr_com_reduit <- nrow(sous_tableau_reduit) # On compte le nombre de communes
pop_annee_dep <- sum(as.numeric(sous_tableau_reduit[, paste0("pop_", annee, "_val")]), na.rm=TRUE)
i_reduit <- c(annee, nbr_com_reduit, pop_annee_dep) # On compile les résultats totaux
evol_nbr_com_reduit <- rbind(evol_nbr_com_reduit, i_reduit, stringsAsFactors = FALSE)
}
# On traite à la main les deux années 2011 et 2021
# Pour 2011, on fait la liste des CODGEO unique de 2021 et on multiplie par leur nombre de communes fusionnantes (donne le nombre de communes en 2011)
# Pas très propre mais pas l'énergie de faire mieux là...
CODGEO_2021_reduit <- as.data.frame(unique(cassini_reduite$commune_mars_2021))
colnames(CODGEO_2021_reduit) <- "CODGEO_new"
# On joint pour avoir le nombre de communes fusionnantes
CODGEO_2021_reduit <- merge(df_new[c("CODGEO_new", "NbrComFus", "P09_POP")], CODGEO_2021_reduit, by = "CODGEO_new", all.y = TRUE)
# Pour les communes non fusionnantes, on indique qu'il y en a une
CODGEO_2021_reduit$NbrComFus[is.na(CODGEO_2021_reduit$NbrComFus)] <- 1
i_2011_reduit <- c(2011, sum(CODGEO_2021_reduit$NbrComFus), sum(CODGEO_2021_reduit$P09_POP))
evol_nbr_com_reduit <- rbind(evol_nbr_com_reduit, i_2011_reduit)
# Pour 2021, on liste simplement le nombre de CODGEO uniques de 2021 pour chacun des groupe
i_2021_reduit <- c(2021, length(unique(cassini_reduite$commune_mars_2021)), NA)
evol_nbr_com_reduit <- rbind(evol_nbr_com_reduit, i_2021_reduit)
colnames (evol_nbr_com_reduit) <- c("annees", "nbr_com", "population")
evol_nbr_com <- evol_nbr_com_reduit
# evol_nbr_com[c(1,2), 1] <- c(1795, 1800) # On modifie l'intitulé pour faciliter la représentation graphique
# Est désormais fait plus haut
# evol_nbr_com$annees[evol_nbr_com$annees == "an3"] <- 1795
# evol_nbr_com$annees[evol_nbr_com$annees == "an8"] <- 1800
evol_nbr_com[,1] <- as.numeric(evol_nbr_com[,1]) # On passe en numérique pour faciliter la représentation
evol_nbr_com[,2] <- as.numeric(evol_nbr_com[,2]) # Si on veut faire une seule colonne
evol_nbr_com[,3] <- as.numeric(evol_nbr_com[,3]) # Si on veut faire une seule colonne
# Calcul de l'évolution en valeur absolue du nombre de commune dans le département
evol_nbr_com$evol <- evol_nbr_com$nbr_com - lag(evol_nbr_com$nbr_com)
# Calcul du taux d'évolution
evol_nbr_com$tx_evol <- round(100 * (evol_nbr_com$nbr_com - lag(evol_nbr_com$nbr_com)) / lag(evol_nbr_com$nbr_com), 2)
# On compile les résultats du département en question
departement <- c(nom_dep, num_dep, evol_nbr_com$nbr_com, evol_nbr_com$population, evol_nbr_com$evol, evol_nbr_com$tx_evol)
# On ajoute ces résultats dans le tableau global
evol_deps <- rbind (evol_deps, departement, stringsAsFactors = FALSE)
# ggplot(data=evol_nbr_com, aes(x=annees, y=nbr_com)) +
# geom_line() +
# scale_x_continuous (breaks = seq(1780, 2030, 20)) +
# labs(title="Évolution du nombre de communes en Aveyron", subtitle="1795-2021", x="", y = "", caption="Sources : cassini.ehess.fr, INSEE")
graphique <- ggplot(data=evol_nbr_com, aes(x=annees, y=nbr_com)) +
geom_line() +
ylim(0, max(evol_nbr_com$nbr_com)+50) +
scale_x_continuous (breaks = seq(1780, 2030, 20)) +
labs(title= paste0("Évolution du nombre de communes en ", nom_dep, " (", num_dep, ")"), subtitle="1795-2021", x="", y = "", caption="Sources : cassini.ehess.fr, INSEE")
print(graphique)
# Pour avoir un graphique plus complet, on change la forme des données
pr_graph <- melt(evol_nbr_com, id.vars = "annees")
ggplot(data=pr_graph, aes(x=annees, y = value)) +
geom_line(aes(color = variable, linetype = variable)) +
# ylim(min(evol_nbr_com$evol), max(evol_nbr_com$nbr_com)+50) +
scale_x_continuous (breaks = seq(1780, 2030, 20)) +
scale_linetype(name = "Évolution", labels = c("Nombre de communes", "Différence entre recensements", "Taux d'évolution entre recensements")) +
scale_color_discrete(name = "Évolution", labels = c("Nombre de communes", "Différence entre recensements", "Taux d'évolution entre recensements")) +
labs(title= paste0("Communes par départements : ", nom_dep, " (", num_dep, ")"), subtitle="1795-2021", x="", y = "", caption="Sources : cassini.ehess.fr, INSEE")
rm(label, annee, nbr_com_reduit, sous_tableau_reduit, i_reduit, i_2021_reduit, CODGEO_2021_reduit, i_2011_reduit, graphique)
}
# Création d'une colonne identifiant les deux recensements en jeu dans les évolutions
evol_nbr_com$ident_evol <- paste0("evol_", lag(evol_nbr_com$annees), "_", evol_nbr_com$annees)
# On identifie les colonnes du tableau regroupant les données de tous les départements
colnames(evol_deps) <- c("Département", "CODE_DEPT", evol_nbr_com$annees, paste0("pop_", evol_nbr_com$annees), evol_nbr_com$ident_evol, paste0("tx_", evol_nbr_com$ident_evol))
# print (evol_deps)
evol_deps_affichage <- evol_deps
colnames(evol_deps_affichage) <- c("Département", "N° Département", evol_nbr_com$annees, paste0("pop_", evol_nbr_com$annees), evol_nbr_com$ident_evol, paste0("tx_", evol_nbr_com$ident_evol))
nbr_col <- length(labels_data_pop) + 2
kable(evol_deps_affichage, row.names = F, digits = 2, align = "c",
caption = "Évolution des communes par départements (à la géographie 1999)") %>%
kableExtra::add_header_above(c(" " = 2, "Nombre de communes" = nbr_col, "Population" = nbr_col, "Évolution en valeur absolue" = nbr_col, "Taux d'évolution entre chaque recensement" = nbr_col))
| Département | N° Département | 1800 | 1806 | 1820 | 1831 | 1836 | 1841 | 1846 | 1851 | 1856 | 1861 | 1866 | 1872 | 1876 | 1881 | 1886 | 1891 | 1896 | 1901 | 1906 | 1911 | 1921 | 1926 | 1931 | 1936 | 1946 | 1954 | 1962 | 1968 | 1975 | 1982 | 1990 | 1999 | 2011 | 2021 | pop_1800 | pop_1806 | pop_1820 | pop_1831 | pop_1836 | pop_1841 | pop_1846 | pop_1851 | pop_1856 | pop_1861 | pop_1866 | pop_1872 | pop_1876 | pop_1881 | pop_1886 | pop_1891 | pop_1896 | pop_1901 | pop_1906 | pop_1911 | pop_1921 | pop_1926 | pop_1931 | pop_1936 | pop_1946 | pop_1954 | pop_1962 | pop_1968 | pop_1975 | pop_1982 | pop_1990 | pop_1999 | pop_2011 | pop_2021 | evol_NA_1800 | evol_1800_1806 | evol_1806_1820 | evol_1820_1831 | evol_1831_1836 | evol_1836_1841 | evol_1841_1846 | evol_1846_1851 | evol_1851_1856 | evol_1856_1861 | evol_1861_1866 | evol_1866_1872 | evol_1872_1876 | evol_1876_1881 | evol_1881_1886 | evol_1886_1891 | evol_1891_1896 | evol_1896_1901 | evol_1901_1906 | evol_1906_1911 | evol_1911_1921 | evol_1921_1926 | evol_1926_1931 | evol_1931_1936 | evol_1936_1946 | evol_1946_1954 | evol_1954_1962 | evol_1962_1968 | evol_1968_1975 | evol_1975_1982 | evol_1982_1990 | evol_1990_1999 | evol_1999_2011 | evol_2011_2021 | tx_evol_NA_1800 | tx_evol_1800_1806 | tx_evol_1806_1820 | tx_evol_1820_1831 | tx_evol_1831_1836 | tx_evol_1836_1841 | tx_evol_1841_1846 | tx_evol_1846_1851 | tx_evol_1851_1856 | tx_evol_1856_1861 | tx_evol_1861_1866 | tx_evol_1866_1872 | tx_evol_1872_1876 | tx_evol_1876_1881 | tx_evol_1881_1886 | tx_evol_1886_1891 | tx_evol_1891_1896 | tx_evol_1896_1901 | tx_evol_1901_1906 | tx_evol_1906_1911 | tx_evol_1911_1921 | tx_evol_1921_1926 | tx_evol_1926_1931 | tx_evol_1931_1936 | tx_evol_1936_1946 | tx_evol_1946_1954 | tx_evol_1954_1962 | tx_evol_1962_1968 | tx_evol_1968_1975 | tx_evol_1975_1982 | tx_evol_1982_1990 | tx_evol_1990_1999 | tx_evol_1999_2011 | tx_evol_2011_2021 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Ain | 01 | 433 | 435 | 433 | 435 | 437 | 436 | 440 | 440 | 441 | 444 | 444 | 447 | 447 | 447 | 447 | 447 | 447 | 449 | 449 | 450 | 450 | 450 | 450 | 450 | 449 | 449 | 449 | 443 | 419 | 419 | 419 | 419 | 421 | 395 | 299013 | 319495 | 325294 | 341792 | 342224 | 351655 | 360092 | 368718 | 360474 | 359154 | 360949 | 351004 | 357621 | 356260 | 356472 | 350157 | 344870 | 342533 | 338082 | 334649 | 308736 | 309015 | 311983 | 304486 | 298162 | 300970 | 314464 | 339262 | 376477 | 418516 | 471019 | 515270 | 592656 | NA | NA | 2 | -2 | 2 | 2 | -1 | 4 | 0 | 1 | 3 | 0 | 3 | 0 | 0 | 0 | 0 | 0 | 2 | 0 | 1 | 0 | 0 | 0 | 0 | -1 | 0 | 0 | -6 | -24 | 0 | 0 | 0 | 2 | -26 | NA | 0.46 | -0.46 | 0.46 | 0.46 | -0.23 | 0.92 | 0 | 0.23 | 0.68 | 0 | 0.68 | 0 | 0 | 0 | 0 | 0 | 0.45 | 0 | 0.22 | 0 | 0 | 0 | 0 | -0.22 | 0 | 0 | -1.34 | -5.42 | 0 | 0 | 0 | 0.48 | -6.18 |
| Aisne | 02 | 853 | 853 | 850 | 837 | 839 | 839 | 837 | 836 | 836 | 835 | 836 | 836 | 836 | 837 | 839 | 839 | 840 | 840 | 840 | 840 | 838 | 833 | 833 | 833 | 833 | 833 | 832 | 830 | 819 | 817 | 817 | 816 | 817 | 801 | 425728 | 442633 | 459305 | 512772 | 526931 | 541727 | 556998 | 558887 | 545659 | 560821 | 564278 | 552032 | 559340 | 556376 | 555541 | 545039 | 541169 | 535169 | 534106 | 529881 | 421040 | 488723 | 489081 | 484378 | 453169 | 486808 | 512645 | 526080 | 533862 | 533970 | 537259 | 535842 | 541285 | NA | NA | 0 | -3 | -13 | 2 | 0 | -2 | -1 | 0 | -1 | 1 | 0 | 0 | 1 | 2 | 0 | 1 | 0 | 0 | 0 | -2 | -5 | 0 | 0 | 0 | 0 | -1 | -2 | -11 | -2 | 0 | -1 | 1 | -16 | NA | 0 | -0.35 | -1.53 | 0.24 | 0 | -0.24 | -0.12 | 0 | -0.12 | 0.12 | 0 | 0 | 0.12 | 0.24 | 0 | 0.12 | 0 | 0 | 0 | -0.24 | -0.6 | 0 | 0 | 0 | 0 | -0.12 | -0.24 | -1.33 | -0.24 | 0 | -0.12 | 0.12 | -1.96 |
| Allier | 03 | 347 | 345 | 338 | 328 | 322 | 316 | 316 | 317 | 317 | 317 | 317 | 317 | 317 | 321 | 321 | 321 | 321 | 321 | 321 | 321 | 321 | 321 | 321 | 321 | 321 | 321 | 321 | 321 | 320 | 320 | 320 | 320 | 321 | 318 | 248864 | 260266 | 276582 | 298750 | 309270 | 311361 | 329540 | 336758 | 352241 | 356432 | 376164 | 390812 | 405783 | 416759 | 424582 | 424382 | 424378 | 422024 | 417961 | 406291 | 370950 | 370562 | 373924 | 368778 | 373481 | 372689 | 380221 | 386533 | 378406 | 369580 | 357710 | 344721 | 343780 | NA | NA | -2 | -7 | -10 | -6 | -6 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -1 | 0 | 0 | 0 | 1 | -3 | NA | -0.58 | -2.03 | -2.96 | -1.83 | -1.86 | 0 | 0.32 | 0 | 0 | 0 | 0 | 0 | 1.26 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -0.31 | 0 | 0 | 0 | 0.31 | -0.93 |
| Alpes-de-Haute-Provence | 04 | 261 | 260 | 258 | 257 | 257 | 256 | 255 | 255 | 254 | 251 | 251 | 251 | 251 | 251 | 251 | 250 | 250 | 250 | 250 | 248 | 248 | 247 | 247 | 245 | 243 | 243 | 238 | 237 | 199 | 200 | 200 | 200 | 200 | 198 | 119048 | 145912 | 149310 | 155596 | 159053 | 156155 | 156677 | 152087 | 149670 | 146368 | 143000 | 139332 | 136166 | 131899 | 129494 | 124285 | 118142 | 115021 | 113126 | 107231 | 91882 | 88347 | 87893 | 85090 | 83354 | 84335 | 91843 | 104813 | 112178 | 119068 | 130883 | 139561 | 159450 | NA | NA | -1 | -2 | -1 | 0 | -1 | -1 | 0 | -1 | -3 | 0 | 0 | 0 | 0 | 0 | -1 | 0 | 0 | 0 | -2 | 0 | -1 | 0 | -2 | -2 | 0 | -5 | -1 | -38 | 1 | 0 | 0 | 0 | -2 | NA | -0.38 | -0.77 | -0.39 | 0 | -0.39 | -0.39 | 0 | -0.39 | -1.18 | 0 | 0 | 0 | 0 | 0 | -0.4 | 0 | 0 | 0 | -0.8 | 0 | -0.4 | 0 | -0.81 | -0.82 | 0 | -2.06 | -0.42 | -16.03 | 0.5 | 0 | 0 | 0 | -1 |
| Hautes-Alpes | 05 | 189 | 189 | 189 | 189 | 189 | 189 | 189 | 189 | 189 | 189 | 189 | 189 | 189 | 189 | 189 | 188 | 187 | 187 | 186 | 186 | 186 | 186 | 186 | 184 | 182 | 181 | 181 | 179 | 175 | 175 | 177 | 177 | 178 | 163 | 113527 | 125844 | 121418 | 129102 | 131162 | 132580 | 132888 | 131805 | 129556 | 125100 | 122117 | 118897 | 119094 | 121787 | 122924 | 115522 | 113229 | 109510 | 107498 | 105083 | 89275 | 87963 | 87566 | 88210 | 84932 | 85067 | 87436 | 91790 | 97358 | 105070 | 113300 | 121419 | 135978 | NA | NA | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -1 | -1 | 0 | -1 | 0 | 0 | 0 | 0 | -2 | -2 | -1 | 0 | -2 | -4 | 0 | 2 | 0 | 1 | -15 | NA | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -0.53 | -0.53 | 0 | -0.53 | 0 | 0 | 0 | 0 | -1.08 | -1.09 | -0.55 | 0 | -1.1 | -2.23 | 0 | 1.14 | 0 | 0.56 | -8.43 |
| Alpes-Maritimes | 06 | 150 | 150 | 147 | 149 | 150 | 148 | 149 | 148 | 147 | 146 | 146 | 150 | 152 | 152 | 152 | 153 | 153 | 153 | 155 | 159 | 159 | 160 | 161 | 161 | 163 | 163 | 163 | 163 | 163 | 163 | 163 | 163 | 163 | 163 | 134854 | 140873 | 154304 | 65495 | 176302 | 63234 | 183578 | 67751 | 184047 | 194776 | 197502 | 199597 | 203604 | 226621 | 238057 | 258571 | 265155 | 293213 | 334007 | 356338 | 357759 | 435253 | 493376 | 513714 | 452546 | 515484 | 618265 | 722070 | 816681 | 881198 | 971829 | 1011326 | 1079100 | NA | NA | 0 | -3 | 2 | 1 | -2 | 1 | -1 | -1 | -1 | 0 | 4 | 2 | 0 | 0 | 1 | 0 | 0 | 2 | 4 | 0 | 1 | 1 | 0 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | NA | 0 | -2 | 1.36 | 0.67 | -1.33 | 0.68 | -0.67 | -0.68 | -0.68 | 0 | 2.74 | 1.33 | 0 | 0 | 0.66 | 0 | 0 | 1.31 | 2.58 | 0 | 0.63 | 0.62 | 0 | 1.24 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Ardèche | 07 | 335 | 335 | 335 | 328 | 330 | 331 | 333 | 334 | 338 | 339 | 339 | 339 | 339 | 339 | 339 | 339 | 339 | 340 | 342 | 345 | 347 | 348 | 349 | 349 | 349 | 349 | 349 | 349 | 342 | 338 | 339 | 339 | 339 | 335 | 266656 | 290833 | 304289 | 340527 | 350828 | 364427 | 379677 | 385963 | 385357 | 388929 | 387193 | 380175 | 384378 | 376907 | 375472 | 371269 | 363501 | 353564 | 347140 | 331801 | 294308 | 289263 | 282911 | 272698 | 254598 | 249077 | 248516 | 256927 | 257065 | 267970 | 277581 | 286023 | 313578 | NA | NA | 0 | 0 | -7 | 2 | 1 | 2 | 1 | 4 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 3 | 2 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | -7 | -4 | 1 | 0 | 0 | -4 | NA | 0 | 0 | -2.09 | 0.61 | 0.3 | 0.6 | 0.3 | 1.2 | 0.3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.29 | 0.59 | 0.88 | 0.58 | 0.29 | 0.29 | 0 | 0 | 0 | 0 | 0 | -2.01 | -1.17 | 0.3 | 0 | 0 | -1.18 |
| Ardennes | 08 | 539 | 540 | 538 | 478 | 477 | 478 | 478 | 477 | 478 | 478 | 478 | 500 | 502 | 502 | 503 | 503 | 503 | 503 | 503 | 503 | 503 | 503 | 503 | 503 | 503 | 503 | 502 | 485 | 459 | 459 | 462 | 463 | 463 | 449 | 236227 | 251166 | 266991 | 289941 | 306150 | 318970 | 326367 | 330137 | 0 | 0 | 325303 | 318828 | 326782 | 333675 | 332759 | 324923 | 318865 | 315589 | 317505 | 318896 | 277811 | 297448 | 293746 | 288632 | 245335 | 280490 | 300245 | 309378 | 309306 | 302338 | 296357 | 290130 | 283296 | NA | NA | 1 | -2 | -60 | -1 | 1 | 0 | -1 | 1 | 0 | 0 | 22 | 2 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -1 | -17 | -26 | 0 | 3 | 1 | 0 | -14 | NA | 0.19 | -0.37 | -11.15 | -0.21 | 0.21 | 0 | -0.21 | 0.21 | 0 | 0 | 4.6 | 0.4 | 0 | 0.2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -0.2 | -3.39 | -5.36 | 0 | 0.65 | 0.22 | 0 | -3.02 |
| Ariège | 09 | 336 | 336 | 336 | 334 | 335 | 335 | 334 | 336 | 335 | 335 | 334 | 335 | 335 | 335 | 335 | 336 | 337 | 337 | 337 | 337 | 337 | 337 | 340 | 340 | 340 | 341 | 341 | 339 | 331 | 331 | 331 | 331 | 332 | 327 | 194216 | 221163 | 233015 | 251803 | 258545 | 262448 | 268448 | 265592 | 249608 | 250171 | 248804 | 244605 | 243100 | 238855 | 234806 | 225882 | 218096 | 208024 | 204204 | 197101 | 171288 | 166168 | 159927 | 153822 | 144455 | 138588 | 135564 | 136790 | 136295 | 134247 | 134966 | 135764 | 150943 | NA | NA | 0 | 0 | -2 | 1 | 0 | -1 | 2 | -1 | 0 | -1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 3 | 0 | 0 | 1 | 0 | -2 | -8 | 0 | 0 | 0 | 1 | -5 | NA | 0 | 0 | -0.6 | 0.3 | 0 | -0.3 | 0.6 | -0.3 | 0 | -0.3 | 0.3 | 0 | 0 | 0 | 0.3 | 0.3 | 0 | 0 | 0 | 0 | 0 | 0.89 | 0 | 0 | 0.29 | 0 | -0.59 | -2.36 | 0 | 0 | 0 | 0.3 | -1.51 |
| Aube | 10 | 452 | 451 | 451 | 447 | 446 | 446 | 446 | 447 | 446 | 446 | 446 | 446 | 446 | 446 | 446 | 446 | 446 | 446 | 446 | 445 | 445 | 445 | 445 | 445 | 445 | 445 | 445 | 443 | 430 | 430 | 431 | 431 | 433 | 431 | 231838 | 238819 | 230688 | 246518 | 253641 | 258013 | 261355 | 264642 | 261631 | 262590 | 261458 | 255132 | 255217 | 255326 | 257374 | 255548 | 251435 | 246163 | 243670 | 240755 | 227839 | 238253 | 242596 | 239563 | 235237 | 240797 | 255099 | 270325 | 284823 | 289300 | 289207 | 292131 | 303298 | NA | NA | -1 | 0 | -4 | -1 | 0 | 0 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -2 | -13 | 0 | 1 | 0 | 2 | -2 | NA | -0.22 | 0 | -0.89 | -0.22 | 0 | 0 | 0.22 | -0.22 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -0.22 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -0.45 | -2.93 | 0 | 0.23 | 0 | 0.46 | -0.46 |
| Aude | 11 | 434 | 433 | 434 | 434 | 433 | 433 | 434 | 434 | 434 | 434 | 435 | 436 | 436 | 437 | 437 | 437 | 439 | 439 | 439 | 440 | 440 | 440 | 440 | 441 | 441 | 441 | 441 | 439 | 437 | 437 | 438 | 438 | 438 | 433 | 225228 | 240993 | 252874 | 273733 | 285419 | 280849 | 287250 | 290125 | 282786 | 283460 | 288709 | 286613 | 300065 | 327988 | 332080 | 317372 | 310513 | 313531 | 308327 | 300537 | 287052 | 291951 | 296880 | 285115 | 268889 | 268254 | 269782 | 278323 | 272366 | 280686 | 298712 | 309770 | 353980 | NA | NA | -1 | 1 | 0 | -1 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 2 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | -2 | -2 | 0 | 1 | 0 | 0 | -5 | NA | -0.23 | 0.23 | 0 | -0.23 | 0 | 0.23 | 0 | 0 | 0 | 0.23 | 0.23 | 0 | 0.23 | 0 | 0 | 0.46 | 0 | 0 | 0.23 | 0 | 0 | 0 | 0.23 | 0 | 0 | 0 | -0.45 | -0.46 | 0 | 0.23 | 0 | 0 | -1.14 |
| Aveyron | 12 | 529 | 184 | 194 | 218 | 241 | 259 | 274 | 281 | 282 | 282 | 285 | 289 | 295 | 301 | 302 | 302 | 302 | 302 | 304 | 306 | 306 | 306 | 306 | 306 | 306 | 307 | 307 | 306 | 304 | 304 | 304 | 304 | 306 | 287 | 313010 | 331373 | 339422 | 358502 | 364781 | 372465 | 385703 | 391129 | 391250 | 395903 | 399295 | 399813 | 413826 | 415075 | 415826 | 400467 | 389464 | 382074 | 377289 | 369448 | 332940 | 328886 | 323782 | 314682 | 307717 | 292727 | 290489 | 281568 | 278306 | 278654 | 270141 | 263808 | 277240 | NA | NA | -345 | 10 | 24 | 23 | 18 | 15 | 7 | 1 | 0 | 3 | 4 | 6 | 6 | 1 | 0 | 0 | 0 | 2 | 2 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | -1 | -2 | 0 | 0 | 0 | 2 | -19 | NA | -65.22 | 5.43 | 12.37 | 10.55 | 7.47 | 5.79 | 2.55 | 0.36 | 0 | 1.06 | 1.4 | 2.08 | 2.03 | 0.33 | 0 | 0 | 0 | 0.66 | 0.66 | 0 | 0 | 0 | 0 | 0 | 0.33 | 0 | -0.33 | -0.65 | 0 | 0 | 0 | 0.66 | -6.21 |
| Bouches-du-Rhône | 13 | 109 | 109 | 106 | 105 | 106 | 106 | 106 | 106 | 106 | 106 | 107 | 108 | 108 | 109 | 109 | 109 | 109 | 110 | 111 | 111 | 111 | 114 | 114 | 116 | 117 | 118 | 118 | 119 | 119 | 119 | 119 | 119 | 119 | 119 | 285012 | 293236 | 313612 | 358742 | 361632 | 374673 | 413918 | 428892 | 473365 | 507113 | 547903 | 554902 | 556379 | 589028 | 604857 | 630622 | 673820 | 734347 | 765918 | 805539 | 841996 | 929549 | 1101672 | 1224802 | 971935 | 1048762 | 1248355 | 1470271 | 1632974 | 1724199 | 1759381 | 1831009 | 1967299 | NA | NA | 0 | -3 | -1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 3 | 0 | 2 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | NA | 0 | -2.75 | -0.94 | 0.95 | 0 | 0 | 0 | 0 | 0 | 0.94 | 0.93 | 0 | 0.93 | 0 | 0 | 0 | 0.92 | 0.91 | 0 | 0 | 2.7 | 0 | 1.75 | 0.86 | 0.85 | 0 | 0.85 | 0 | 0 | 0 | 0 | 0 | 0 |
| Calvados | 14 | 896 | 896 | 890 | 832 | 810 | 792 | 791 | 784 | 784 | 765 | 765 | 764 | 750 | 763 | 763 | 763 | 763 | 763 | 763 | 763 | 763 | 763 | 763 | 763 | 763 | 760 | 754 | 749 | 704 | 704 | 705 | 705 | 709 | 530 | 451062 | 505238 | 492407 | 494516 | 488474 | 495855 | 498181 | 491210 | 478397 | 480992 | 474909 | 454012 | 442284 | 439830 | 437267 | 428945 | 417176 | 410179 | 403431 | 396318 | 384730 | 390492 | 401356 | 404901 | 400026 | 442688 | 480757 | 519695 | 560967 | 589559 | 618478 | 648385 | 682868 | NA | NA | 0 | -6 | -58 | -22 | -18 | -1 | -7 | 0 | -19 | 0 | -1 | -14 | 13 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -3 | -6 | -5 | -45 | 0 | 1 | 0 | 4 | -179 | NA | 0 | -0.67 | -6.52 | -2.64 | -2.22 | -0.13 | -0.88 | 0 | -2.42 | 0 | -0.13 | -1.83 | 1.73 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -0.39 | -0.79 | -0.66 | -6.01 | 0 | 0.14 | 0 | 0.57 | -25.25 |
| Cantal | 15 | 269 | 269 | 269 | 260 | 256 | 257 | 258 | 259 | 259 | 259 | 260 | 264 | 266 | 267 | 267 | 267 | 267 | 267 | 267 | 267 | 267 | 267 | 267 | 267 | 268 | 269 | 269 | 268 | 258 | 259 | 260 | 260 | 261 | 247 | 219810 | 250864 | 251448 | 257585 | 261364 | 255734 | 258733 | 253253 | 246518 | 239399 | 238009 | 232903 | 231086 | 236190 | 241742 | 239601 | 234382 | 230511 | 228690 | 223361 | 199402 | 196999 | 193505 | 190888 | 186843 | 177065 | 172977 | 169330 | 166549 | 162838 | 158723 | 150778 | 148581 | NA | NA | 0 | 0 | -9 | -4 | 1 | 1 | 1 | 0 | 0 | 1 | 4 | 2 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | -1 | -10 | 1 | 1 | 0 | 1 | -14 | NA | 0 | 0 | -3.35 | -1.54 | 0.39 | 0.39 | 0.39 | 0 | 0 | 0.39 | 1.54 | 0.76 | 0.38 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.37 | 0.37 | 0 | -0.37 | -3.73 | 0.39 | 0.39 | 0 | 0.38 | -5.36 |
| Charente | 16 | 454 | 453 | 453 | 452 | 456 | 439 | 434 | 434 | 431 | 427 | 427 | 426 | 426 | 426 | 426 | 426 | 426 | 426 | 426 | 426 | 426 | 426 | 426 | 425 | 424 | 424 | 424 | 423 | 405 | 405 | 405 | 404 | 404 | 365 | 320118 | 326680 | 347299 | 361288 | 0 | 367893 | 379031 | 382912 | 378721 | 379081 | 378218 | 367520 | 373950 | 370742 | 366408 | 360259 | 356236 | 350305 | 351733 | 347061 | 316369 | 312790 | 310489 | 309279 | 311137 | 313635 | 327658 | 331016 | 337064 | 340770 | 341993 | 339628 | 351563 | NA | NA | -1 | 0 | -1 | 4 | -17 | -5 | 0 | -3 | -4 | 0 | -1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -1 | -1 | 0 | 0 | -1 | -18 | 0 | 0 | -1 | 0 | -39 | NA | -0.22 | 0 | -0.22 | 0.88 | -3.73 | -1.14 | 0 | -0.69 | -0.93 | 0 | -0.23 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -0.23 | -0.24 | 0 | 0 | -0.24 | -4.26 | 0 | 0 | -0.25 | 0 | -9.65 |
| Charente-Maritime | 17 | 506 | 506 | 505 | 481 | 480 | 480 | 480 | 480 | 480 | 479 | 479 | 479 | 481 | 480 | 480 | 480 | 480 | 480 | 481 | 482 | 482 | 482 | 483 | 483 | 483 | 486 | 486 | 484 | 472 | 472 | 472 | 472 | 474 | 465 | 399162 | 393039 | 409478 | 445291 | 449753 | 457694 | 467048 | 469439 | 474858 | 480350 | 479486 | 466051 | 465628 | 466416 | 462803 | 456202 | 453455 | 452149 | 453793 | 450871 | 418310 | 417789 | 415249 | 419021 | 416187 | 447973 | 470897 | 483622 | 497859 | 513220 | 527146 | 557024 | 616887 | NA | NA | 0 | -1 | -24 | -1 | 0 | 0 | 0 | 0 | -1 | 0 | 0 | 2 | -1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 3 | 0 | -2 | -12 | 0 | 0 | 0 | 2 | -9 | NA | 0 | -0.2 | -4.75 | -0.21 | 0 | 0 | 0 | 0 | -0.21 | 0 | 0 | 0.42 | -0.21 | 0 | 0 | 0 | 0 | 0.21 | 0.21 | 0 | 0 | 0.21 | 0 | 0 | 0.62 | 0 | -0.41 | -2.48 | 0 | 0 | 0 | 0.42 | -1.9 |
| Cher | 18 | 304 | 304 | 304 | 297 | 297 | 293 | 291 | 291 | 290 | 290 | 291 | 291 | 291 | 291 | 291 | 292 | 292 | 292 | 292 | 293 | 293 | 293 | 293 | 293 | 290 | 290 | 290 | 290 | 290 | 290 | 290 | 290 | 290 | 287 | 217785 | 229247 | 239561 | 256247 | 276856 | 273947 | 294726 | 306959 | 314917 | 323444 | 336601 | 335372 | 345613 | 351405 | 355349 | 359276 | 347725 | 345543 | 343484 | 337810 | 304800 | 298398 | 293918 | 288695 | 286070 | 284376 | 293514 | 304601 | 316350 | 320174 | 321559 | 314428 | 311022 | NA | NA | 0 | 0 | -7 | 0 | -4 | -2 | 0 | -1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | -3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -3 | NA | 0 | 0 | -2.3 | 0 | -1.35 | -0.68 | 0 | -0.34 | 0 | 0.34 | 0 | 0 | 0 | 0 | 0.34 | 0 | 0 | 0 | 0.34 | 0 | 0 | 0 | 0 | -1.02 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -1.03 |
| Corrèze | 19 | 294 | 293 | 294 | 291 | 292 | 290 | 286 | 286 | 286 | 286 | 286 | 286 | 287 | 287 | 287 | 287 | 287 | 288 | 289 | 289 | 289 | 289 | 289 | 289 | 289 | 289 | 289 | 289 | 285 | 286 | 286 | 286 | 287 | 281 | 243654 | 254271 | 273378 | 293853 | 302478 | 304958 | 315974 | 320865 | 314986 | 310118 | 310843 | 301828 | 310485 | 316820 | 326494 | 328119 | 322393 | 318422 | 317430 | 309646 | 273808 | 269289 | 264129 | 262770 | 254574 | 242798 | 237926 | 237858 | 240363 | 241448 | 237908 | 232576 | 245385 | NA | NA | -1 | 1 | -3 | 1 | -2 | -4 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -4 | 1 | 0 | 0 | 1 | -6 | NA | -0.34 | 0.34 | -1.02 | 0.34 | -0.68 | -1.38 | 0 | 0 | 0 | 0 | 0 | 0.35 | 0 | 0 | 0 | 0 | 0.35 | 0.35 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -1.38 | 0.35 | 0 | 0 | 0.35 | -2.09 |
| Côte-d’Or | 21 | 728 | 730 | 727 | 486 | 727 | 727 | 728 | 727 | 727 | 717 | 717 | 717 | 717 | 717 | 717 | 717 | 717 | 717 | 717 | 717 | 717 | 717 | 717 | 717 | 717 | 717 | 717 | 716 | 705 | 707 | 707 | 707 | 706 | 698 | 339562 | 355436 | 358148 | 252301 | 385073 | 383564 | 389799 | 399611 | 384416 | 383335 | 381624 | 373406 | 377663 | 382819 | 381574 | 376866 | 368168 | 361626 | 357959 | 350044 | 321088 | 328881 | 333800 | 334386 | 335602 | 356839 | 387869 | 421192 | 456070 | 473548 | 493866 | 506755 | 524144 | NA | NA | 2 | -3 | -241 | 241 | 0 | 1 | -1 | 0 | -10 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -1 | -11 | 2 | 0 | 0 | -1 | -8 | NA | 0.27 | -0.41 | -33.15 | 49.59 | 0 | 0.14 | -0.14 | 0 | -1.38 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -0.14 | -1.54 | 0.28 | 0 | 0 | -0.14 | -1.13 |
| Côtes-d’Armor | 22 | 378 | 378 | 377 | 375 | 375 | 375 | 375 | 377 | 378 | 382 | 384 | 388 | 388 | 388 | 388 | 388 | 389 | 389 | 389 | 389 | 389 | 389 | 389 | 390 | 390 | 390 | 384 | 384 | 368 | 368 | 371 | 371 | 373 | 348 | 504021 | 519382 | 552015 | 598909 | 604356 | 607531 | 628645 | 629042 | 621271 | 628615 | 644460 | 622487 | 630591 | 627241 | 627914 | 618317 | 615763 | 609027 | 611220 | 605238 | 557590 | 552549 | 539293 | 531612 | 526745 | 502975 | 501735 | 505890 | 525394 | 538724 | 538249 | 542213 | 587519 | NA | NA | 0 | -1 | -2 | 0 | 0 | 0 | 2 | 1 | 4 | 2 | 4 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | -6 | 0 | -16 | 0 | 3 | 0 | 2 | -25 | NA | 0 | -0.26 | -0.53 | 0 | 0 | 0 | 0.53 | 0.27 | 1.06 | 0.52 | 1.04 | 0 | 0 | 0 | 0 | 0.26 | 0 | 0 | 0 | 0 | 0 | 0 | 0.26 | 0 | 0 | -1.54 | 0 | -4.17 | 0 | 0.82 | 0 | 0.54 | -6.7 |
| Creuse | 23 | 295 | 296 | 292 | 282 | 269 | 265 | 262 | 261 | 261 | 261 | 261 | 263 | 263 | 264 | 266 | 266 | 266 | 266 | 266 | 266 | 266 | 266 | 266 | 266 | 266 | 266 | 266 | 264 | 260 | 260 | 260 | 260 | 261 | 257 | 218041 | 226224 | 248785 | 265640 | 276164 | 278418 | 285720 | 287181 | 278869 | 270055 | 274167 | 274663 | 278423 | 278782 | 284942 | 284660 | 279366 | 277831 | 274094 | 266188 | 228244 | 219148 | 207882 | 201844 | 188669 | 172702 | 163515 | 156876 | 146214 | 139968 | 131349 | 124470 | 124000 | NA | NA | 1 | -4 | -10 | -13 | -4 | -3 | -1 | 0 | 0 | 0 | 2 | 0 | 1 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -2 | -4 | 0 | 0 | 0 | 1 | -4 | NA | 0.34 | -1.35 | -3.42 | -4.61 | -1.49 | -1.13 | -0.38 | 0 | 0 | 0 | 0.77 | 0 | 0.38 | 0.76 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -0.75 | -1.52 | 0 | 0 | 0 | 0.38 | -1.53 |
| Dordogne | 24 | 641 | 639 | 635 | 584 | 583 | 583 | 584 | 585 | 584 | 582 | 582 | 582 | 582 | 583 | 583 | 585 | 585 | 585 | 587 | 587 | 587 | 587 | 587 | 587 | 587 | 587 | 580 | 575 | 555 | 556 | 557 | 557 | 559 | 507 | 409800 | 423911 | 453136 | 482654 | 487560 | 489822 | 501331 | 505087 | 504600 | 501029 | 500543 | 477389 | 489848 | 495037 | 492205 | 478471 | 464822 | 452951 | 447152 | 437432 | 396742 | 392489 | 383720 | 386963 | 387643 | 377870 | 375455 | 374073 | 373179 | 377356 | 386365 | 388293 | 413181 | NA | NA | -2 | -4 | -51 | -1 | 0 | 1 | 1 | -1 | -2 | 0 | 0 | 0 | 1 | 0 | 2 | 0 | 0 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -7 | -5 | -20 | 1 | 1 | 0 | 2 | -52 | NA | -0.31 | -0.63 | -8.03 | -0.17 | 0 | 0.17 | 0.17 | -0.17 | -0.34 | 0 | 0 | 0 | 0.17 | 0 | 0.34 | 0 | 0 | 0.34 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -1.19 | -0.86 | -3.48 | 0.18 | 0.18 | 0 | 0.36 | -9.3 |
| Doubs | 25 | 658 | 653 | 648 | 640 | 641 | 641 | 641 | 641 | 641 | 640 | 640 | 638 | 639 | 639 | 639 | 639 | 638 | 638 | 638 | 637 | 637 | 637 | 637 | 637 | 637 | 637 | 636 | 636 | 594 | 592 | 594 | 594 | 594 | 573 | 230694 | 240783 | 242782 | 265696 | 276609 | 286416 | 292507 | 296813 | 287002 | 296385 | 298249 | 291302 | 306211 | 310915 | 311076 | 303176 | 302143 | 298973 | 298537 | 300039 | 285106 | 296678 | 305591 | 304915 | 298355 | 327280 | 384979 | 426469 | 471082 | 477163 | 484770 | 499062 | 525276 | NA | NA | -5 | -5 | -8 | 1 | 0 | 0 | 0 | 0 | -1 | 0 | -2 | 1 | 0 | 0 | 0 | -1 | 0 | 0 | -1 | 0 | 0 | 0 | 0 | 0 | 0 | -1 | 0 | -42 | -2 | 2 | 0 | 0 | -21 | NA | -0.76 | -0.77 | -1.23 | 0.16 | 0 | 0 | 0 | 0 | -0.16 | 0 | -0.31 | 0.16 | 0 | 0 | 0 | -0.16 | 0 | 0 | -0.16 | 0 | 0 | 0 | 0 | 0 | 0 | -0.16 | 0 | -6.6 | -0.34 | 0.34 | 0 | 0 | -3.54 |
| Drôme | 26 | 361 | 359 | 359 | 359 | 359 | 360 | 362 | 362 | 365 | 366 | 367 | 370 | 372 | 376 | 379 | 379 | 379 | 379 | 379 | 378 | 378 | 378 | 378 | 378 | 379 | 381 | 382 | 381 | 372 | 371 | 371 | 370 | 369 | 364 | 235106 | 253372 | 273511 | 299639 | 305501 | 311544 | 320106 | 326314 | 324536 | 327014 | 324227 | 321053 | 321750 | 313763 | 314615 | 306419 | 303491 | 297321 | 297270 | 290894 | 263509 | 263750 | 267080 | 267281 | 268233 | 275290 | 304227 | 342891 | 361847 | 389781 | 414072 | 437778 | 482984 | NA | NA | -2 | 0 | 0 | 0 | 1 | 2 | 0 | 3 | 1 | 1 | 3 | 2 | 4 | 3 | 0 | 0 | 0 | 0 | -1 | 0 | 0 | 0 | 0 | 1 | 2 | 1 | -1 | -9 | -1 | 0 | -1 | -1 | -5 | NA | -0.55 | 0 | 0 | 0 | 0.28 | 0.56 | 0 | 0.83 | 0.27 | 0.27 | 0.82 | 0.54 | 1.08 | 0.8 | 0 | 0 | 0 | 0 | -0.26 | 0 | 0 | 0 | 0 | 0.26 | 0.53 | 0.26 | -0.26 | -2.36 | -0.27 | 0 | -0.27 | -0.27 | -1.36 |
| Eure | 27 | 842 | 841 | 804 | 798 | 794 | 791 | 703 | 704 | 701 | 700 | 700 | 700 | 700 | 700 | 700 | 700 | 700 | 700 | 700 | 700 | 700 | 700 | 700 | 700 | 698 | 699 | 699 | 688 | 676 | 676 | 676 | 675 | 675 | 585 | 402769 | 421460 | 416124 | 424135 | 424292 | 424780 | 423540 | 415777 | 404665 | 398670 | 394467 | 377974 | 373649 | 364291 | 358829 | 349471 | 340652 | 334691 | 330140 | 323763 | 303159 | 308445 | 305788 | 303829 | 315902 | 332514 | 361943 | 383385 | 422952 | 462323 | 513818 | 541054 | 582822 | NA | NA | -1 | -37 | -6 | -4 | -3 | -88 | 1 | -3 | -1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -2 | 1 | 0 | -11 | -12 | 0 | 0 | -1 | 0 | -90 | NA | -0.12 | -4.4 | -0.75 | -0.5 | -0.38 | -11.13 | 0.14 | -0.43 | -0.14 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -0.29 | 0.14 | 0 | -1.57 | -1.74 | 0 | 0 | -0.15 | 0 | -13.33 |
| Eure-et-Loir | 28 | 460 | 460 | 460 | 450 | 439 | 435 | 431 | 428 | 426 | 425 | 425 | 425 | 425 | 425 | 425 | 425 | 425 | 425 | 425 | 425 | 425 | 425 | 425 | 425 | 425 | 425 | 424 | 424 | 401 | 402 | 403 | 403 | 403 | 365 | 257703 | 265937 | 264444 | 278817 | 284992 | 286309 | 292102 | 294640 | 290822 | 290024 | 290519 | 282451 | 282830 | 279877 | 283491 | 284452 | 280226 | 275194 | 273584 | 272037 | 251065 | 254997 | 254603 | 252508 | 257919 | 260851 | 277375 | 302047 | 335151 | 362813 | 396073 | 407665 | 425502 | NA | NA | 0 | 0 | -10 | -11 | -4 | -4 | -3 | -2 | -1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -1 | 0 | -23 | 1 | 1 | 0 | 0 | -38 | NA | 0 | 0 | -2.17 | -2.44 | -0.91 | -0.92 | -0.7 | -0.47 | -0.23 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -0.24 | 0 | -5.42 | 0.25 | 0.25 | 0 | 0 | -9.43 |
| Finistère | 29 | 290 | 287 | 285 | 282 | 282 | 283 | 283 | 284 | 284 | 284 | 284 | 284 | 287 | 290 | 291 | 291 | 294 | 296 | 296 | 296 | 298 | 299 | 299 | 301 | 295 | 295 | 288 | 286 | 283 | 283 | 283 | 283 | 283 | 277 | 456707 | 453307 | 483512 | 523886 | 546815 | 576586 | 602717 | 617618 | 607817 | 623936 | 662227 | 642545 | 666066 | 681234 | 707820 | 727012 | 739648 | 773014 | 795103 | 809771 | 762514 | 753702 | 744295 | 756793 | 728244 | 727847 | 749558 | 768929 | 804088 | 828364 | 838687 | 852418 | 893914 | NA | NA | -3 | -2 | -3 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 3 | 3 | 1 | 0 | 3 | 2 | 0 | 0 | 2 | 1 | 0 | 2 | -6 | 0 | -7 | -2 | -3 | 0 | 0 | 0 | 0 | -6 | NA | -1.03 | -0.7 | -1.05 | 0 | 0.35 | 0 | 0.35 | 0 | 0 | 0 | 0 | 1.06 | 1.05 | 0.34 | 0 | 1.03 | 0.68 | 0 | 0 | 0.68 | 0.34 | 0 | 0.67 | -1.99 | 0 | -2.37 | -0.69 | -1.05 | 0 | 0 | 0 | 0 | -2.12 |
| Gard | 30 | 364 | 364 | 343 | 342 | 344 | 345 | 347 | 348 | 348 | 348 | 347 | 348 | 348 | 349 | 349 | 349 | 349 | 349 | 350 | 350 | 350 | 352 | 352 | 352 | 354 | 354 | 354 | 354 | 352 | 352 | 352 | 352 | 352 | 350 | 300274 | 322144 | 334164 | 357389 | 365678 | 375554 | 400151 | 406731 | 416833 | 422499 | 427407 | 413233 | 423804 | 414584 | 416039 | 418201 | 414776 | 419557 | 419875 | 412182 | 394865 | 401253 | 405353 | 393566 | 379156 | 394765 | 432744 | 475190 | 490612 | 526326 | 579796 | 617250 | 693888 | NA | NA | 0 | -21 | -1 | 2 | 1 | 2 | 1 | 0 | 0 | -1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 2 | 0 | 0 | 2 | 0 | 0 | 0 | -2 | 0 | 0 | 0 | 0 | -2 | NA | 0 | -5.77 | -0.29 | 0.58 | 0.29 | 0.58 | 0.29 | 0 | 0 | -0.29 | 0.29 | 0 | 0.29 | 0 | 0 | 0 | 0 | 0.29 | 0 | 0 | 0.57 | 0 | 0 | 0.57 | 0 | 0 | 0 | -0.56 | 0 | 0 | 0 | 0 | -0.57 |
| Haute-Garonne | 31 | 611 | 609 | 605 | 603 | 596 | 590 | 580 | 577 | 578 | 578 | 584 | 584 | 585 | 587 | 587 | 587 | 587 | 588 | 588 | 589 | 589 | 589 | 589 | 589 | 589 | 591 | 593 | 592 | 588 | 587 | 588 | 588 | 589 | 586 | 343883 | 367524 | 391074 | 426412 | 453978 | 468411 | 481938 | 481915 | 480837 | 484141 | 493804 | 478230 | 477730 | 478009 | 481169 | 472383 | 459377 | 448481 | 442065 | 432126 | 424582 | 431505 | 441799 | 458647 | 512260 | 525669 | 594633 | 690712 | 777431 | 824501 | 925962 | 1046338 | 1230819.99602 | NA | NA | -2 | -4 | -2 | -7 | -6 | -10 | -3 | 1 | 0 | 6 | 0 | 1 | 2 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 2 | 2 | -1 | -4 | -1 | 1 | 0 | 1 | -3 | NA | -0.33 | -0.66 | -0.33 | -1.16 | -1.01 | -1.69 | -0.52 | 0.17 | 0 | 1.04 | 0 | 0.17 | 0.34 | 0 | 0 | 0 | 0.17 | 0 | 0.17 | 0 | 0 | 0 | 0 | 0 | 0.34 | 0.34 | -0.17 | -0.68 | -0.17 | 0.17 | 0 | 0.17 | -0.51 |
| Gers | 32 | 684 | 681 | 681 | 503 | 486 | 466 | 466 | 467 | 466 | 466 | 465 | 465 | 465 | 465 | 465 | 465 | 466 | 466 | 466 | 466 | 466 | 466 | 466 | 466 | 466 | 467 | 467 | 466 | 462 | 462 | 462 | 463 | 464 | 462 | 261740 | 284432 | 299404 | 309861 | 0 | 309796 | 313189 | 307479 | 304497 | 298931 | 295692 | 284717 | 283537 | 281532 | 274391 | 261084 | 250472 | 238448 | 231088 | 221994 | 194406 | 196419 | 193134 | 192451 | 190436 | 185111 | 182263 | 181576 | 175366 | 174154 | 174587 | 172335 | 193456 | NA | NA | -3 | 0 | -178 | -17 | -20 | 0 | 1 | -1 | 0 | -1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | -1 | -4 | 0 | 0 | 1 | 1 | -2 | NA | -0.44 | 0 | -26.14 | -3.38 | -4.12 | 0 | 0.21 | -0.21 | 0 | -0.21 | 0 | 0 | 0 | 0 | 0 | 0.22 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.21 | 0 | -0.21 | -0.86 | 0 | 0 | 0.22 | 0.22 | -0.43 |
| Gironde | 33 | 567 | 561 | 542 | 543 | 544 | 544 | 544 | 546 | 546 | 547 | 549 | 551 | 552 | 552 | 552 | 553 | 554 | 554 | 554 | 554 | 554 | 554 | 554 | 554 | 555 | 555 | 555 | 548 | 543 | 543 | 542 | 542 | 542 | 535 | 502988 | 514482 | 522253 | 554170 | 555786 | 568034 | 602444 | 614387 | 640757 | 667193 | 701855 | 705149 | 735242 | 748703 | 775845 | 793528 | 809902 | 821131 | 823925 | 829095 | 819128 | 827973 | 852768 | 850567 | 858381 | 896517 | 935448 | 1009390 | 1061480 | 1127546 | 1213499 | 1287334 | 1434661 | NA | NA | -6 | -19 | 1 | 1 | 0 | 0 | 2 | 0 | 1 | 2 | 2 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | -7 | -5 | 0 | -1 | 0 | 0 | -7 | NA | -1.06 | -3.39 | 0.18 | 0.18 | 0 | 0 | 0.37 | 0 | 0.18 | 0.37 | 0.36 | 0.18 | 0 | 0 | 0.18 | 0.18 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.18 | 0 | 0 | -1.26 | -0.91 | 0 | -0.18 | 0 | 0 | -1.29 |
| Hérault | 34 | 333 | 333 | 332 | 332 | 327 | 326 | 328 | 330 | 330 | 331 | 332 | 335 | 336 | 336 | 338 | 338 | 338 | 340 | 340 | 341 | 342 | 342 | 343 | 343 | 343 | 343 | 343 | 342 | 343 | 343 | 343 | 343 | 343 | 342 | 275413 | 301101 | 324126 | 346454 | 356722 | 366173 | 384610 | 387664 | 399276 | 409487 | 418295 | 428729 | 445053 | 441527 | 439044 | 461651 | 469684 | 489421 | 482779 | 480484 | 488215 | 500575 | 514819 | 502043 | 461100 | 471429 | 516658 | 591397 | 648202 | 706499 | 794603 | 896441 | 1031974 | NA | NA | 0 | -1 | 0 | -5 | -1 | 2 | 2 | 0 | 1 | 1 | 3 | 1 | 0 | 2 | 0 | 0 | 2 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | -1 | 1 | 0 | 0 | 0 | 0 | -1 | NA | 0 | -0.3 | 0 | -1.51 | -0.31 | 0.61 | 0.61 | 0 | 0.3 | 0.3 | 0.9 | 0.3 | 0 | 0.6 | 0 | 0 | 0.59 | 0 | 0.29 | 0.29 | 0 | 0.29 | 0 | 0 | 0 | 0 | -0.29 | 0.29 | 0 | 0 | 0 | 0 | -0.29 |
| Ille-et-Vilaine | 35 | 351 | 350 | 350 | 349 | 349 | 347 | 348 | 350 | 350 | 350 | 350 | 352 | 353 | 357 | 357 | 359 | 359 | 360 | 360 | 360 | 360 | 360 | 360 | 361 | 361 | 362 | 362 | 359 | 353 | 352 | 353 | 352 | 354 | 332 | 488846 | 508334 | 533205 | 546835 | 547219 | 549217 | 562872 | 574972 | 580821 | 584257 | 593079 | 589681 | 602712 | 615480 | 621384 | 626875 | 622039 | 613567 | 611805 | 608098 | 558574 | 561688 | 562558 | 565766 | 578246 | 586812 | 614268 | 652722 | 702199 | 749764 | 798718 | 867533 | 981419 | NA | NA | -1 | 0 | -1 | 0 | -2 | 1 | 2 | 0 | 0 | 0 | 2 | 1 | 4 | 0 | 2 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | -3 | -6 | -1 | 1 | -1 | 2 | -22 | NA | -0.28 | 0 | -0.29 | 0 | -0.57 | 0.29 | 0.57 | 0 | 0 | 0 | 0.57 | 0.28 | 1.13 | 0 | 0.56 | 0 | 0.28 | 0 | 0 | 0 | 0 | 0 | 0.28 | 0 | 0.28 | 0 | -0.83 | -1.67 | -0.28 | 0.28 | -0.28 | 0.57 | -6.21 |
| Indre | 36 | 274 | 274 | 260 | 249 | 249 | 248 | 247 | 248 | 246 | 245 | 245 | 245 | 245 | 245 | 245 | 245 | 245 | 245 | 245 | 245 | 247 | 247 | 247 | 248 | 248 | 248 | 248 | 248 | 247 | 247 | 247 | 247 | 247 | 241 | 205628 | 204721 | 230373 | 245531 | 257350 | 253290 | 264315 | 271904 | 273479 | 270054 | 277858 | 277663 | 281248 | 287759 | 296147 | 292868 | 289206 | 288788 | 290216 | 287673 | 260535 | 255095 | 247912 | 245622 | 252075 | 247436 | 251432 | 247178 | 248523 | 243191 | 237510 | 231139 | 232268 | NA | NA | 0 | -14 | -11 | 0 | -1 | -1 | 1 | -2 | -1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | -1 | 0 | 0 | 0 | 0 | -6 | NA | 0 | -5.11 | -4.23 | 0 | -0.4 | -0.4 | 0.4 | -0.81 | -0.41 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.82 | 0 | 0 | 0.4 | 0 | 0 | 0 | 0 | -0.4 | 0 | 0 | 0 | 0 | -2.43 |
| Indre-et-Loire | 37 | 310 | 309 | 303 | 290 | 282 | 281 | 281 | 281 | 281 | 281 | 281 | 281 | 282 | 282 | 282 | 282 | 282 | 282 | 282 | 282 | 282 | 282 | 282 | 282 | 282 | 281 | 281 | 278 | 277 | 277 | 277 | 277 | 277 | 272 | 269036 | 275291 | 282172 | 297116 | 304274 | 306338 | 312420 | 315611 | 318438 | 323579 | 325025 | 317027 | 324875 | 329160 | 340921 | 337298 | 337064 | 335541 | 337916 | 341205 | 327743 | 334486 | 335226 | 343276 | 349675 | 364706 | 395210 | 437870 | 478601 | 506097 | 529345 | 554003 | 588420 | NA | NA | -1 | -6 | -13 | -8 | -1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -1 | 0 | -3 | -1 | 0 | 0 | 0 | 0 | -5 | NA | -0.32 | -1.94 | -4.29 | -2.76 | -0.35 | 0 | 0 | 0 | 0 | 0 | 0 | 0.36 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -0.35 | 0 | -1.07 | -0.36 | 0 | 0 | 0 | 0 | -1.81 |
| Isère | 38 | 530 | 530 | 527 | 529 | 530 | 525 | 525 | 523 | 524 | 526 | 528 | 531 | 534 | 536 | 539 | 539 | 539 | 539 | 539 | 540 | 540 | 540 | 542 | 542 | 542 | 542 | 540 | 537 | 533 | 533 | 533 | 533 | 533 | 512 | 413117 | 447370 | 476498 | 521515 | 541516 | 553554 | 562570 | 566726 | 550214 | 550724 | 554249 | 550058 | 555190 | 555438 | 555845 | 547424 | 542919 | 544254 | 538308 | 531674 | 502033 | 529816 | 549739 | 540903 | 541899 | 587982 | 676823 | 767367 | 860339 | 936771 | 1016228 | 1094006 | 1197038 | NA | NA | 0 | -3 | 2 | 1 | -5 | 0 | -2 | 1 | 2 | 2 | 3 | 3 | 2 | 3 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 2 | 0 | 0 | 0 | -2 | -3 | -4 | 0 | 0 | 0 | 0 | -21 | NA | 0 | -0.57 | 0.38 | 0.19 | -0.94 | 0 | -0.38 | 0.19 | 0.38 | 0.38 | 0.57 | 0.56 | 0.37 | 0.56 | 0 | 0 | 0 | 0 | 0.19 | 0 | 0 | 0.37 | 0 | 0 | 0 | -0.37 | -0.56 | -0.74 | 0 | 0 | 0 | 0 | -3.94 |
| Jura | 39 | 727 | 727 | 707 | 573 | 574 | 579 | 583 | 583 | 583 | 582 | 582 | 583 | 583 | 583 | 583 | 583 | 583 | 583 | 583 | 584 | 584 | 584 | 584 | 584 | 582 | 580 | 579 | 577 | 543 | 543 | 545 | 545 | 545 | 495 | 287988 | 300233 | 301551 | 312343 | 315187 | 316568 | 315990 | 313165 | 296583 | 297946 | 298375 | 287520 | 288721 | 285175 | 281179 | 272933 | 266046 | 261179 | 257626 | 252609 | 228978 | 230598 | 229018 | 220704 | 216286 | 220109 | 225584 | 233441 | 238856 | 242925 | 248759 | 250857 | 262388 | NA | NA | 0 | -20 | -134 | 1 | 5 | 4 | 0 | 0 | -1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | -2 | -2 | -1 | -2 | -34 | 0 | 2 | 0 | 0 | -50 | NA | 0 | -2.75 | -18.95 | 0.17 | 0.87 | 0.69 | 0 | 0 | -0.17 | 0 | 0.17 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.17 | 0 | 0 | 0 | 0 | -0.34 | -0.34 | -0.17 | -0.35 | -5.89 | 0 | 0.37 | 0 | 0 | -9.17 |
| Landes | 40 | 363 | 363 | 352 | 344 | 339 | 339 | 333 | 332 | 332 | 331 | 330 | 331 | 333 | 333 | 333 | 333 | 333 | 333 | 334 | 334 | 334 | 334 | 334 | 334 | 334 | 334 | 334 | 332 | 331 | 331 | 331 | 331 | 331 | 327 | 222293 | 232204 | 252718 | 277331 | 278921 | 282404 | 292157 | 295377 | 302793 | 300839 | 306693 | 299263 | 303508 | 301143 | 302266 | 297902 | 292884 | 291586 | 293467 | 288902 | 263937 | 258038 | 257186 | 251436 | 248395 | 248943 | 260495 | 277381 | 288323 | 297424 | 311461 | 327334 | 379341 | NA | NA | 0 | -11 | -8 | -5 | 0 | -6 | -1 | 0 | -1 | -1 | 1 | 2 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -2 | -1 | 0 | 0 | 0 | 0 | -4 | NA | 0 | -3.03 | -2.27 | -1.45 | 0 | -1.77 | -0.3 | 0 | -0.3 | -0.3 | 0.3 | 0.6 | 0 | 0 | 0 | 0 | 0 | 0.3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -0.6 | -0.3 | 0 | 0 | 0 | 0 | -1.21 |
| Loir-et-Cher | 41 | 309 | 306 | 299 | 298 | 296 | 296 | 296 | 296 | 296 | 298 | 297 | 297 | 297 | 297 | 297 | 297 | 297 | 297 | 297 | 297 | 297 | 297 | 297 | 297 | 297 | 297 | 296 | 295 | 291 | 291 | 291 | 291 | 291 | 267 | 209966 | 213482 | 227527 | 235750 | 244083 | 249362 | 256383 | 261892 | 264043 | 269029 | 275757 | 268801 | 272634 | 275713 | 279214 | 280358 | 278153 | 275538 | 276019 | 271231 | 251528 | 248099 | 241592 | 240908 | 242419 | 239824 | 250741 | 267896 | 283686 | 296224 | 305937 | 314968 | 327868 | NA | NA | -3 | -7 | -1 | -2 | 0 | 0 | 0 | 0 | 2 | -1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -1 | -1 | -4 | 0 | 0 | 0 | 0 | -24 | NA | -0.97 | -2.29 | -0.33 | -0.67 | 0 | 0 | 0 | 0 | 0.68 | -0.34 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -0.34 | -0.34 | -1.36 | 0 | 0 | 0 | 0 | -8.25 |
| Loire | 42 | 326 | 326 | 326 | 320 | 320 | 318 | 321 | 321 | 317 | 320 | 323 | 327 | 329 | 330 | 331 | 332 | 333 | 333 | 335 | 336 | 337 | 338 | 338 | 338 | 338 | 339 | 331 | 327 | 327 | 327 | 327 | 327 | 327 | 323 | 290903 | 315858 | 343524 | 390847 | 412675 | 434723 | 453928 | 472620 | 505130 | 517604 | 537118 | 550985 | 590613 | 599836 | 603384 | 616227 | 625336 | 647633 | 643943 | 640549 | 637130 | 669216 | 664822 | 650223 | 631591 | 654482 | 696348 | 722443 | 742396 | 739521 | 746288 | 728524 | 746115 | NA | NA | 0 | 0 | -6 | 0 | -2 | 3 | 0 | -4 | 3 | 3 | 4 | 2 | 1 | 1 | 1 | 1 | 0 | 2 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | -8 | -4 | 0 | 0 | 0 | 0 | 0 | -4 | NA | 0 | 0 | -1.84 | 0 | -0.62 | 0.94 | 0 | -1.25 | 0.95 | 0.94 | 1.24 | 0.61 | 0.3 | 0.3 | 0.3 | 0.3 | 0 | 0.6 | 0.3 | 0.3 | 0.3 | 0 | 0 | 0 | 0.3 | -2.36 | -1.21 | 0 | 0 | 0 | 0 | 0 | -1.22 |
| Haute-Loire | 43 | 274 | 274 | 274 | 270 | 266 | 266 | 256 | 257 | 258 | 260 | 261 | 262 | 263 | 264 | 264 | 264 | 265 | 265 | 265 | 265 | 265 | 266 | 267 | 267 | 268 | 268 | 268 | 264 | 260 | 260 | 260 | 260 | 262 | 258 | 234736 | 268212 | 276830 | 291092 | 293190 | 298414 | 306743 | 304421 | 301342 | 305873 | 312937 | 308709 | 313723 | 316461 | 320063 | 316735 | 316699 | 314058 | 314770 | 303838 | 268910 | 260610 | 251608 | 245271 | 228076 | 215577 | 211036 | 208337 | 205491 | 205895 | 206568 | 209113 | 223438 | NA | NA | 0 | 0 | -4 | -4 | 0 | -10 | 1 | 1 | 2 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | -4 | -4 | 0 | 0 | 0 | 2 | -4 | NA | 0 | 0 | -1.46 | -1.48 | 0 | -3.76 | 0.39 | 0.39 | 0.78 | 0.38 | 0.38 | 0.38 | 0.38 | 0 | 0 | 0.38 | 0 | 0 | 0 | 0 | 0.38 | 0.38 | 0 | 0.37 | 0 | 0 | -1.49 | -1.52 | 0 | 0 | 0 | 0.77 | -1.53 |
| Loire-Atlantique | 44 | 209 | 209 | 208 | 207 | 206 | 206 | 206 | 206 | 208 | 208 | 213 | 215 | 217 | 217 | 217 | 217 | 217 | 218 | 219 | 218 | 219 | 220 | 220 | 220 | 222 | 223 | 224 | 224 | 221 | 221 | 221 | 221 | 223 | 208 | 369305 | 407827 | 432638 | 470093 | 0 | 486807 | 517381 | 535664 | 555996 | 580207 | 598598 | 602206 | 612970 | 625625 | 643884 | 645263 | 647172 | 664971 | 666748 | 669920 | 649691 | 651547 | 652079 | 659428 | 665064 | 733575 | 803372 | 861452 | 934499 | 995498 | 1052183 | 1134266 | 1269130 | NA | NA | 0 | -1 | -1 | -1 | 0 | 0 | 0 | 2 | 0 | 5 | 2 | 2 | 0 | 0 | 0 | 0 | 1 | 1 | -1 | 1 | 1 | 0 | 0 | 2 | 1 | 1 | 0 | -3 | 0 | 0 | 0 | 2 | -15 | NA | 0 | -0.48 | -0.48 | -0.48 | 0 | 0 | 0 | 0.97 | 0 | 2.4 | 0.94 | 0.93 | 0 | 0 | 0 | 0 | 0.46 | 0.46 | -0.46 | 0.46 | 0.46 | 0 | 0 | 0.91 | 0.45 | 0.45 | 0 | -1.34 | 0 | 0 | 0 | 0.9 | -6.73 |
| Loiret | 45 | 363 | 363 | 357 | 348 | 348 | 348 | 348 | 348 | 348 | 349 | 349 | 349 | 349 | 349 | 349 | 349 | 349 | 349 | 349 | 349 | 349 | 349 | 349 | 349 | 349 | 349 | 349 | 348 | 334 | 334 | 334 | 334 | 334 | 325 | 286255 | 285395 | 291396 | 305432 | 313106 | 314547 | 330954 | 340138 | 343708 | 352737 | 357110 | 353021 | 360903 | 368526 | 374875 | 377718 | 371019 | 366660 | 364999 | 364061 | 337224 | 341225 | 342679 | 343865 | 346918 | 360523 | 389854 | 430629 | 490189 | 535669 | 580612 | 618126 | 653510 | NA | NA | 0 | -6 | -9 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -1 | -14 | 0 | 0 | 0 | 0 | -9 | NA | 0 | -1.65 | -2.52 | 0 | 0 | 0 | 0 | 0 | 0.29 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -0.29 | -4.02 | 0 | 0 | 0 | 0 | -2.69 |
| Lot | 46 | 355 | 303 | 302 | 300 | 300 | 307 | 310 | 314 | 315 | 315 | 318 | 321 | 323 | 323 | 324 | 325 | 327 | 327 | 329 | 329 | 330 | 331 | 334 | 335 | 337 | 340 | 340 | 340 | 340 | 340 | 340 | 340 | 342 | 315 | 262466 | 268351 | 275199 | 284475 | 287062 | 287348 | 291751 | 295916 | 293675 | 295455 | 288919 | 281404 | 276512 | 280269 | 271514 | 253885 | 240403 | 226720 | 216611 | 205769 | 176889 | 171776 | 166637 | 162572 | 154897 | 147754 | 149929 | 151198 | 150778 | 154533 | 155816 | 160197 | 175701 | NA | NA | -52 | -1 | -2 | 0 | 7 | 3 | 4 | 1 | 0 | 3 | 3 | 2 | 0 | 1 | 1 | 2 | 0 | 2 | 0 | 1 | 1 | 3 | 1 | 2 | 3 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | -27 | NA | -14.65 | -0.33 | -0.66 | 0 | 2.33 | 0.98 | 1.29 | 0.32 | 0 | 0.95 | 0.94 | 0.62 | 0 | 0.31 | 0.31 | 0.62 | 0 | 0.61 | 0 | 0.3 | 0.3 | 0.91 | 0.3 | 0.6 | 0.89 | 0 | 0 | 0 | 0 | 0 | 0 | 0.59 | -7.89 |
| Lot-et-Garonne | 47 | 383 | 383 | 383 | 354 | 354 | 312 | 312 | 312 | 315 | 316 | 318 | 318 | 325 | 326 | 326 | 326 | 326 | 326 | 326 | 326 | 326 | 326 | 326 | 327 | 328 | 328 | 328 | 326 | 311 | 314 | 317 | 317 | 319 | 319 | 300143 | 326226 | 330119 | 346885 | 346400 | 347073 | 346260 | 341345 | 340041 | 332065 | 327962 | 319289 | 316920 | 312081 | 307437 | 295360 | 286377 | 278740 | 274610 | 268083 | 239972 | 246609 | 247500 | 252761 | 265449 | 265549 | 275028 | 290592 | 292616 | 298522 | 305989 | 305380 | 329697 | NA | NA | 0 | 0 | -29 | 0 | -42 | 0 | 0 | 3 | 1 | 2 | 0 | 7 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | -2 | -15 | 3 | 3 | 0 | 2 | 0 | NA | 0 | 0 | -7.57 | 0 | -11.86 | 0 | 0 | 0.96 | 0.32 | 0.63 | 0 | 2.2 | 0.31 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.31 | 0.31 | 0 | 0 | -0.61 | -4.6 | 0.96 | 0.96 | 0 | 0.63 | 0 |
| Lozère | 48 | 192 | 192 | 191 | 189 | 193 | 193 | 194 | 193 | 193 | 193 | 193 | 194 | 196 | 197 | 197 | 198 | 198 | 198 | 198 | 198 | 198 | 198 | 198 | 198 | 198 | 198 | 197 | 194 | 185 | 185 | 185 | 185 | 184 | 151 | 126344 | 143247 | 133934 | 140460 | 141858 | 144233 | 159137 | 145574 | 141906 | 139089 | 137265 | 135081 | 138318 | 143566 | 141264 | 135527 | 132151 | 128866 | 128016 | 122738 | 108822 | 104733 | 101859 | 98480 | 90523 | 82391 | 81868 | 77258 | 74825 | 74294 | 72825 | 73509 | 76662 | NA | NA | 0 | -1 | -2 | 4 | 0 | 1 | -1 | 0 | 0 | 0 | 1 | 2 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -1 | -3 | -9 | 0 | 0 | 0 | -1 | -33 | NA | 0 | -0.52 | -1.05 | 2.12 | 0 | 0.52 | -0.52 | 0 | 0 | 0 | 0.52 | 1.03 | 0.51 | 0 | 0.51 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -0.51 | -1.52 | -4.64 | 0 | 0 | 0 | -0.54 | -17.93 |
| Maine-et-Loire | 49 | 388 | 387 | 382 | 386 | 380 | 376 | 374 | 377 | 377 | 377 | 381 | 381 | 382 | 382 | 382 | 382 | 382 | 382 | 382 | 382 | 382 | 382 | 382 | 382 | 382 | 382 | 382 | 378 | 364 | 364 | 364 | 364 | 369 | 178 | 377539 | 405243 | 443469 | 468466 | 469348 | 487520 | 504029 | 515264 | 524714 | 523951 | 531710 | 518534 | 518029 | 524249 | 528458 | 519382 | 515632 | 515436 | 514228 | 508873 | 475490 | 478461 | 476694 | 478409 | 496786 | 519051 | 557074 | 585568 | 629849 | 675321 | 705882 | 732942 | 786406 | NA | NA | -1 | -5 | 4 | -6 | -4 | -2 | 3 | 0 | 0 | 4 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -4 | -14 | 0 | 0 | 0 | 5 | -191 | NA | -0.26 | -1.29 | 1.05 | -1.55 | -1.05 | -0.53 | 0.8 | 0 | 0 | 1.06 | 0 | 0.26 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -1.05 | -3.7 | 0 | 0 | 0 | 1.37 | -51.76 |
| Manche | 50 | 670 | 668 | 654 | 650 | 645 | 641 | 641 | 643 | 643 | 644 | 644 | 643 | 643 | 643 | 643 | 643 | 645 | 646 | 646 | 646 | 646 | 646 | 647 | 647 | 647 | 647 | 647 | 637 | 593 | 596 | 601 | 601 | 610 | 445 | 529069 | 581615 | 594406 | 591376 | 594319 | 597531 | 604252 | 600882 | 595202 | 591421 | 573674 | 544776 | 539910 | 526377 | 520865 | 513815 | 500052 | 490653 | 486739 | 475456 | 424873 | 430714 | 432814 | 437865 | 434833 | 446261 | 446329 | 451419 | 451191 | 465502 | 479217 | 481059 | 502356 | NA | NA | -2 | -14 | -4 | -5 | -4 | 0 | 2 | 0 | 1 | 0 | -1 | 0 | 0 | 0 | 0 | 2 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | -10 | -44 | 3 | 5 | 0 | 9 | -165 | NA | -0.3 | -2.1 | -0.61 | -0.77 | -0.62 | 0 | 0.31 | 0 | 0.16 | 0 | -0.16 | 0 | 0 | 0 | 0 | 0.31 | 0.16 | 0 | 0 | 0 | 0 | 0.15 | 0 | 0 | 0 | 0 | -1.55 | -6.91 | 0.51 | 0.84 | 0 | 1.5 | -27.05 |
| Marne | 51 | 694 | 693 | 692 | 691 | 683 | 683 | 676 | 673 | 668 | 666 | 664 | 664 | 664 | 663 | 661 | 660 | 660 | 660 | 661 | 661 | 661 | 661 | 661 | 661 | 661 | 653 | 653 | 634 | 621 | 618 | 619 | 619 | 622 | 614 | 304609 | 310695 | 309108 | 339716 | 344905 | 355785 | 363819 | 371743 | 364290 | 373768 | 379312 | 381170 | 407476 | 421498 | 429217 | 434459 | 439331 | 432674 | 433963 | 436115 | 366492 | 397596 | 411998 | 410045 | 386717 | 414899 | 441995 | 485175 | 530399 | 543627 | 558217 | 563735 | 568193 | NA | NA | -1 | -1 | -1 | -8 | 0 | -7 | -3 | -5 | -2 | -2 | 0 | 0 | -1 | -2 | -1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | -8 | 0 | -19 | -13 | -3 | 1 | 0 | 3 | -8 | NA | -0.14 | -0.14 | -0.14 | -1.16 | 0 | -1.02 | -0.44 | -0.74 | -0.3 | -0.3 | 0 | 0 | -0.15 | -0.3 | -0.15 | 0 | 0 | 0.15 | 0 | 0 | 0 | 0 | 0 | 0 | -1.21 | 0 | -2.91 | -2.05 | -0.48 | 0.16 | 0 | 0.48 | -1.29 |
| Haute-Marne | 52 | 547 | 548 | 545 | 546 | 545 | 547 | 547 | 546 | 546 | 546 | 546 | 546 | 546 | 546 | 546 | 546 | 546 | 546 | 546 | 546 | 546 | 546 | 546 | 546 | 545 | 545 | 543 | 539 | 394 | 395 | 424 | 432 | 433 | 421 | 224753 | 235844 | 231374 | 249517 | 253384 | 255363 | 259836 | 266087 | 254432 | 256043 | 256734 | 248942 | 250888 | 253383 | 246303 | 242069 | 230723 | 225187 | 220505 | 213663 | 197942 | 194482 | 188930 | 187670 | 181073 | 196466 | 207777 | 213747 | 212314 | 210670 | 204067 | 194873 | 185214 | NA | NA | 1 | -3 | 1 | -1 | 2 | 0 | -1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -1 | 0 | -2 | -4 | -145 | 1 | 29 | 8 | 1 | -12 | NA | 0.18 | -0.55 | 0.18 | -0.18 | 0.37 | 0 | -0.18 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -0.18 | 0 | -0.37 | -0.74 | -26.9 | 0.25 | 7.34 | 1.89 | 0.23 | -2.77 |
| Mayenne | 53 | 285 | 285 | 281 | 280 | 275 | 275 | 274 | 274 | 274 | 274 | 274 | 274 | 276 | 276 | 276 | 276 | 276 | 276 | 276 | 276 | 276 | 276 | 276 | 276 | 276 | 276 | 276 | 275 | 262 | 262 | 261 | 261 | 262 | 241 | 301968 | 328337 | 339973 | 353937 | 361764 | 361392 | 368439 | 374566 | 373841 | 375163 | 367855 | 350637 | 351933 | 344881 | 340063 | 332387 | 321187 | 313103 | 305457 | 297732 | 262447 | 259934 | 254479 | 251348 | 256317 | 251522 | 250030 | 252762 | 261789 | 271784 | 278037 | 285338 | 308273 | NA | NA | 0 | -4 | -1 | -5 | 0 | -1 | 0 | 0 | 0 | 0 | 0 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -1 | -13 | 0 | -1 | 0 | 1 | -21 | NA | 0 | -1.4 | -0.36 | -1.79 | 0 | -0.36 | 0 | 0 | 0 | 0 | 0 | 0.73 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -0.36 | -4.73 | 0 | -0.38 | 0 | 0.38 | -8.02 |
| Meurthe-et-Moselle | 54 | 630 | 626 | 577 | 582 | 590 | 594 | 596 | 596 | 596 | 597 | 597 | 597 | 597 | 598 | 597 | 597 | 597 | 599 | 599 | 601 | 601 | 601 | 601 | 601 | 600 | 600 | 600 | 600 | 588 | 588 | 594 | 594 | 594 | 591 | 280699 | 302838 | 310778 | 277520 | 348728 | 353769 | 303027 | 306157 | 304479 | 366949 | 58644 | 365363 | 404849 | 419514 | 431946 | 444389 | 466654 | 484934 | 517716 | 564932 | 503989 | 552261 | 592803 | 576219 | 528960 | 604190 | 678247 | 705554 | 722693 | 716964 | 711943 | 713779 | 731019 | NA | NA | -4 | -49 | 5 | 8 | 4 | 2 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | -1 | 0 | 0 | 2 | 0 | 2 | 0 | 0 | 0 | 0 | -1 | 0 | 0 | 0 | -12 | 0 | 6 | 0 | 0 | -3 | NA | -0.63 | -7.83 | 0.87 | 1.37 | 0.68 | 0.34 | 0 | 0 | 0.17 | 0 | 0 | 0 | 0.17 | -0.17 | 0 | 0 | 0.34 | 0 | 0.33 | 0 | 0 | 0 | 0 | -0.17 | 0 | 0 | 0 | -2 | 0 | 1.02 | 0 | 0 | -0.51 |
| Meuse | 55 | 589 | 589 | 587 | 587 | 586 | 586 | 586 | 586 | 586 | 585 | 585 | 585 | 584 | 584 | 584 | 584 | 584 | 584 | 584 | 584 | 584 | 584 | 584 | 584 | 584 | 584 | 583 | 580 | 481 | 486 | 498 | 498 | 501 | 499 | 269057 | 284478 | 291586 | 313847 | 317275 | 325715 | 325075 | 327744 | 305087 | 304530 | 300767 | 284176 | 293504 | 289338 | 291425 | 291744 | 289904 | 283023 | 279794 | 277550 | 206960 | 217773 | 215458 | 216572 | 188474 | 206761 | 215596 | 209175 | 203799 | 199983 | 196223 | 192198 | 194101 | NA | NA | 0 | -2 | 0 | -1 | 0 | 0 | 0 | 0 | -1 | 0 | 0 | -1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -1 | -3 | -99 | 5 | 12 | 0 | 3 | -2 | NA | 0 | -0.34 | 0 | -0.17 | 0 | 0 | 0 | 0 | -0.17 | 0 | 0 | -0.17 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -0.17 | -0.51 | -17.07 | 1.04 | 2.47 | 0 | 0.6 | -0.4 |
| Morbihan | 56 | 227 | 226 | 225 | 226 | 227 | 231 | 231 | 233 | 233 | 237 | 243 | 248 | 249 | 249 | 250 | 253 | 254 | 255 | 256 | 257 | 258 | 260 | 260 | 261 | 261 | 262 | 263 | 263 | 261 | 261 | 261 | 261 | 261 | 250 | 400825 | 403011 | 415809 | 432333 | 447886 | 447588 | 471500 | 477097 | 474344 | 486405 | 500425 | 490294 | 506573 | 521614 | 535256 | 544470 | 552028 | 563468 | 573152 | 578400 | 546047 | 543175 | 537528 | 542248 | 506884 | 520978 | 530833 | 540474 | 563588 | 590889 | 619838 | 643873 | 716182 | NA | NA | -1 | -1 | 1 | 1 | 4 | 0 | 2 | 0 | 4 | 6 | 5 | 1 | 0 | 1 | 3 | 1 | 1 | 1 | 1 | 1 | 2 | 0 | 1 | 0 | 1 | 1 | 0 | -2 | 0 | 0 | 0 | 0 | -11 | NA | -0.44 | -0.44 | 0.44 | 0.44 | 1.76 | 0 | 0.87 | 0 | 1.72 | 2.53 | 2.06 | 0.4 | 0 | 0.4 | 1.2 | 0.4 | 0.39 | 0.39 | 0.39 | 0.39 | 0.78 | 0 | 0.38 | 0 | 0.38 | 0.38 | 0 | -0.76 | 0 | 0 | 0 | 0 | -4.21 |
| Moselle | 57 | 904 | 908 | 700 | 701 | 729 | 735 | 738 | 740 | 740 | 746 | 746 | 749 | 751 | 753 | 750 | 750 | 758 | 758 | 758 | 757 | 756 | 762 | 763 | 763 | 762 | 762 | 757 | 751 | 718 | 720 | 727 | 730 | 729 | 724 | 367959 | 408689 | 443390 | 128435 | 502225 | 496335 | 133365 | 130944 | 120152 | 507550 | 392971 | 489820 | 479596 | 492068 | 489034 | 509614 | 524278 | 564412 | 613677 | 605737 | 584374 | 626421 | 684961 | 688331 | 613858 | 760451 | 910697 | 963422 | 1006373 | 1007189 | 1011302 | 1023447 | 1044876 | NA | NA | 4 | -208 | 1 | 28 | 6 | 3 | 2 | 0 | 6 | 0 | 3 | 2 | 2 | -3 | 0 | 8 | 0 | 0 | -1 | -1 | 6 | 1 | 0 | -1 | 0 | -5 | -6 | -33 | 2 | 7 | 3 | -1 | -5 | NA | 0.44 | -22.91 | 0.14 | 3.99 | 0.82 | 0.41 | 0.27 | 0 | 0.81 | 0 | 0.4 | 0.27 | 0.27 | -0.4 | 0 | 1.07 | 0 | 0 | -0.13 | -0.13 | 0.79 | 0.13 | 0 | -0.13 | 0 | -0.66 | -0.79 | -4.39 | 0.28 | 0.97 | 0.41 | -0.14 | -0.69 |
| Nièvre | 58 | 331 | 331 | 329 | 323 | 317 | 316 | 316 | 316 | 317 | 314 | 312 | 313 | 313 | 313 | 313 | 313 | 313 | 313 | 313 | 313 | 313 | 313 | 313 | 313 | 313 | 313 | 313 | 313 | 312 | 312 | 312 | 312 | 311 | 308 | 231937 | 241473 | 257990 | 283062 | 297470 | 305286 | 321853 | 326972 | 326134 | 333026 | 343083 | 340361 | 346822 | 347755 | 347645 | 343581 | 333899 | 323783 | 313972 | 299312 | 270148 | 260502 | 255195 | 249673 | 248559 | 240078 | 245921 | 247702 | 245212 | 239635 | 233278 | 225198 | 219586 | NA | NA | 0 | -2 | -6 | -6 | -1 | 0 | 0 | 1 | -3 | -2 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -1 | 0 | 0 | 0 | -1 | -3 | NA | 0 | -0.6 | -1.82 | -1.86 | -0.32 | 0 | 0 | 0.32 | -0.95 | -0.64 | 0.32 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -0.32 | 0 | 0 | 0 | -0.32 | -0.96 |
| Nord | 59 | 666 | 666 | 664 | 659 | 659 | 661 | 662 | 662 | 663 | 660 | 660 | 661 | 662 | 663 | 665 | 666 | 667 | 667 | 667 | 667 | 668 | 668 | 669 | 669 | 666 | 665 | 665 | 663 | 654 | 652 | 652 | 653 | 650 | 648 | 763401 | 837916 | 905603 | 990252 | 1026757 | 1085705 | 1133399 | 1158712 | 1212819 | 1303792 | 1392488 | 1448051 | 1520046 | 1603647 | 1670550 | 1736623 | 1812150 | 1867245 | 1896090 | 1961963 | 1788133 | 1969330 | 2029643 | 2022357 | 1917704 | 2096805 | 2293388 | 2418166 | 2511478 | 2520526 | 2531855 | 2555020 | 2571940 | NA | NA | 0 | -2 | -5 | 0 | 2 | 1 | 0 | 1 | -3 | 0 | 1 | 1 | 1 | 2 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | -3 | -1 | 0 | -2 | -9 | -2 | 0 | 1 | -3 | -2 | NA | 0 | -0.3 | -0.75 | 0 | 0.3 | 0.15 | 0 | 0.15 | -0.45 | 0 | 0.15 | 0.15 | 0.15 | 0.3 | 0.15 | 0.15 | 0 | 0 | 0 | 0.15 | 0 | 0.15 | 0 | -0.45 | -0.15 | 0 | -0.3 | -1.36 | -0.31 | 0 | 0.15 | -0.46 | -0.31 |
| Oise | 60 | 731 | 730 | 730 | 630 | 698 | 699 | 700 | 700 | 700 | 700 | 700 | 701 | 701 | 701 | 701 | 701 | 701 | 701 | 701 | 701 | 701 | 701 | 702 | 702 | 698 | 698 | 697 | 696 | 693 | 693 | 693 | 693 | 696 | 682 | 360251 | 383507 | 375816 | 397810 | 398792 | 399592 | 406331 | 403281 | 396351 | 401828 | 395702 | 390832 | 401618 | 404555 | 403086 | 401835 | 404511 | 407808 | 410050 | 411028 | 387760 | 405971 | 407432 | 402569 | 396724 | 435308 | 481289 | 540988 | 606320 | 661781 | 725603 | 766441 | 804810 | NA | NA | -1 | 0 | -100 | 68 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | -4 | 0 | -1 | -1 | -3 | 0 | 0 | 0 | 3 | -14 | NA | -0.14 | 0 | -13.7 | 10.79 | 0.14 | 0.14 | 0 | 0 | 0 | 0 | 0.14 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.14 | 0 | -0.57 | 0 | -0.14 | -0.14 | -0.43 | 0 | 0 | 0 | 0.43 | -2.01 |
| Orne | 61 | 623 | 624 | 595 | 537 | 532 | 512 | 511 | 511 | 511 | 511 | 510 | 510 | 511 | 511 | 512 | 512 | 512 | 512 | 512 | 512 | 513 | 513 | 513 | 513 | 513 | 513 | 511 | 507 | 507 | 507 | 507 | 507 | 505 | 385 | 401026 | 429506 | 427048 | 128871 | 443523 | 441912 | 442107 | 439884 | 430127 | 423350 | 414618 | 398250 | 392526 | 376126 | 367248 | 354387 | 339162 | 326952 | 315993 | 307433 | 274814 | 277637 | 273717 | 269331 | 273181 | 274862 | 280526 | 288503 | 293523 | 295472 | 293204 | 292337 | 292210 | NA | NA | 1 | -29 | -58 | -5 | -20 | -1 | 0 | 0 | 0 | -1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | -2 | -4 | 0 | 0 | 0 | 0 | -2 | -120 | NA | 0.16 | -4.65 | -9.75 | -0.93 | -3.76 | -0.2 | 0 | 0 | 0 | -0.2 | 0 | 0.2 | 0 | 0.2 | 0 | 0 | 0 | 0 | 0 | 0.2 | 0 | 0 | 0 | 0 | 0 | -0.39 | -0.78 | 0 | 0 | 0 | 0 | -0.39 | -23.76 |
| Pas-de-Calais | 62 | 931 | 930 | 923 | 905 | 905 | 905 | 905 | 905 | 904 | 905 | 905 | 906 | 906 | 906 | 905 | 905 | 905 | 906 | 906 | 906 | 907 | 907 | 907 | 907 | 908 | 910 | 910 | 909 | 898 | 898 | 897 | 894 | 896 | 891 | 537136 | 572604 | 611648 | 656674 | 666656 | 686459 | 697167 | 696980 | 699302 | 724088 | 749494 | 760759 | 794518 | 820344 | 854787 | 875494 | 907370 | 956466 | 1013492 | 1069355 | 990704 | 1172723 | 1205975 | 1180196 | 1169196 | 1277467 | 1366927 | 1397817 | 1402295 | 1412413 | 1433203 | 1441568 | 1461354 | NA | NA | -1 | -7 | -18 | 0 | 0 | 0 | 0 | -1 | 1 | 0 | 1 | 0 | 0 | -1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 2 | 0 | -1 | -11 | 0 | -1 | -3 | 2 | -5 | NA | -0.11 | -0.75 | -1.95 | 0 | 0 | 0 | 0 | -0.11 | 0.11 | 0 | 0.11 | 0 | 0 | -0.11 | 0 | 0 | 0.11 | 0 | 0 | 0.11 | 0 | 0 | 0 | 0.11 | 0.22 | 0 | -0.11 | -1.21 | 0 | -0.11 | -0.33 | 0.22 | -0.56 |
| Puy-de-Dôme | 63 | 437 | 438 | 438 | 441 | 443 | 444 | 443 | 443 | 443 | 443 | 444 | 455 | 465 | 467 | 469 | 470 | 470 | 470 | 471 | 472 | 472 | 472 | 472 | 473 | 473 | 473 | 473 | 473 | 470 | 470 | 470 | 470 | 470 | 464 | 507130 | 542834 | 553404 | 573096 | 589029 | 591458 | 600073 | 596295 | 590254 | 576141 | 569642 | 565569 | 570207 | 566064 | 570964 | 564266 | 555078 | 544194 | 535419 | 525916 | 490560 | 515399 | 500590 | 486103 | 478876 | 481380 | 508928 | 547743 | 580033 | 594365 | 598213 | 604266 | 629416 | NA | NA | 1 | 0 | 3 | 2 | 1 | -1 | 0 | 0 | 0 | 1 | 11 | 10 | 2 | 2 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | -3 | 0 | 0 | 0 | 0 | -6 | NA | 0.23 | 0 | 0.68 | 0.45 | 0.23 | -0.23 | 0 | 0 | 0 | 0.23 | 2.48 | 2.2 | 0.43 | 0.43 | 0.21 | 0 | 0 | 0.21 | 0.21 | 0 | 0 | 0 | 0.21 | 0 | 0 | 0 | 0 | -0.63 | 0 | 0 | 0 | 0 | -1.28 |
| Pyrénées-Atlantiques | 64 | 657 | 588 | 654 | 631 | 631 | 562 | 561 | 561 | 559 | 558 | 557 | 558 | 558 | 558 | 558 | 559 | 559 | 559 | 559 | 559 | 559 | 560 | 560 | 560 | 560 | 560 | 560 | 559 | 537 | 540 | 543 | 545 | 547 | 546 | 360336 | 388448 | 404284 | 434720 | 452582 | 458935 | 465487 | 453602 | 451755 | 436628 | 435497 | 426892 | 431525 | 434366 | 432999 | 425027 | 423572 | 426347 | 425815 | 433318 | 402981 | 414556 | 422719 | 413411 | 415797 | 420009 | 466038 | 508734 | 534748 | 555696 | 578514 | 600018 | 650356 | NA | NA | -69 | 66 | -23 | 0 | -69 | -1 | 0 | -2 | -1 | -1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | -1 | -22 | 3 | 3 | 2 | 2 | -1 | NA | -10.5 | 11.22 | -3.52 | 0 | -10.94 | -0.18 | 0 | -0.36 | -0.18 | -0.18 | 0.18 | 0 | 0 | 0 | 0.18 | 0 | 0 | 0 | 0 | 0 | 0.18 | 0 | 0 | 0 | 0 | 0 | -0.18 | -3.94 | 0.56 | 0.56 | 0.37 | 0.37 | -0.18 |
| Hautes-Pyrénées | 65 | 499 | 498 | 495 | 491 | 489 | 484 | 488 | 480 | 479 | 479 | 480 | 480 | 480 | 480 | 480 | 480 | 480 | 480 | 480 | 480 | 480 | 480 | 480 | 480 | 481 | 481 | 481 | 479 | 474 | 474 | 474 | 474 | 474 | 469 | 178611 | 198763 | 212088 | 233031 | 244170 | 244196 | 251285 | 250934 | 245856 | 239805 | 239120 | 128795 | 238037 | 236474 | 234825 | 225861 | 218973 | 215546 | 209397 | 206095 | 185760 | 187875 | 189993 | 188604 | 201954 | 203544 | 211433 | 225730 | 227222 | 227922 | 224759 | 222368 | 229670 | NA | NA | -1 | -3 | -4 | -2 | -5 | 4 | -8 | -1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | -2 | -5 | 0 | 0 | 0 | 0 | -5 | NA | -0.2 | -0.6 | -0.81 | -0.41 | -1.02 | 0.83 | -1.64 | -0.21 | 0 | 0.21 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.21 | 0 | 0 | -0.42 | -1.04 | 0 | 0 | 0 | 0 | -1.05 |
| Pyrénées-Orientales | 66 | 248 | 248 | 248 | 226 | 226 | 227 | 227 | 228 | 229 | 230 | 231 | 231 | 231 | 231 | 231 | 232 | 232 | 232 | 232 | 232 | 232 | 233 | 234 | 234 | 233 | 233 | 233 | 232 | 221 | 221 | 226 | 226 | 226 | 226 | 110732 | 126626 | 143054 | 157052 | 164304 | 170679 | 180089 | 181941 | 183037 | 181681 | 189431 | 191745 | 197930 | 208855 | 211187 | 210125 | 208387 | 212121 | 213171 | 212986 | 217503 | 229979 | 238647 | 233347 | 228776 | 230287 | 251231 | 281976 | 299506 | 334557 | 363796 | 392803 | 445890 | NA | NA | 0 | 0 | -22 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | -1 | 0 | 0 | -1 | -11 | 0 | 5 | 0 | 0 | 0 | NA | 0 | 0 | -8.87 | 0 | 0.44 | 0 | 0.44 | 0.44 | 0.44 | 0.43 | 0 | 0 | 0 | 0 | 0.43 | 0 | 0 | 0 | 0 | 0 | 0.43 | 0.43 | 0 | -0.43 | 0 | 0 | -0.43 | -4.74 | 0 | 2.26 | 0 | 0 | 0 |
| Bas-Rhin | 67 | 561 | 561 | 558 | 560 | 560 | 560 | 559 | 560 | 560 | 559 | 558 | 559 | 559 | 559 | 559 | 560 | 560 | 560 | 560 | 560 | 560 | 560 | 561 | 561 | 560 | 560 | 560 | 560 | 519 | 520 | 522 | 526 | 527 | 514 | 410030 | 453539 | 517452 | 557535 | 580590 | 579085 | 598862 | 605833 | 581827 | 596994 | 607642 | 599189 | 596950 | 610823 | 611267 | 620481 | 637548 | 658374 | 685631 | 699600 | 650710 | 669981 | 687299 | 710920 | 672478 | 707166 | 769351 | 826605 | 882121 | 915676 | 953053 | 1026120 | 1094439 | NA | NA | 0 | -3 | 2 | 0 | 0 | -1 | 1 | 0 | -1 | -1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | -1 | 0 | 0 | 0 | -41 | 1 | 2 | 4 | 1 | -13 | NA | 0 | -0.53 | 0.36 | 0 | 0 | -0.18 | 0.18 | 0 | -0.18 | -0.18 | 0.18 | 0 | 0 | 0 | 0.18 | 0 | 0 | 0 | 0 | 0 | 0 | 0.18 | 0 | -0.18 | 0 | 0 | 0 | -7.32 | 0.19 | 0.38 | 0.77 | 0.19 | -2.47 |
| Haut-Rhin | 68 | 380 | 383 | 383 | 383 | 383 | 384 | 384 | 384 | 384 | 384 | 384 | 386 | 386 | 386 | 386 | 386 | 386 | 386 | 386 | 386 | 385 | 385 | 386 | 386 | 386 | 384 | 384 | 384 | 378 | 377 | 377 | 377 | 377 | 366 | 266001 | 296429 | 325481 | 375807 | 394535 | 409102 | 431182 | 436744 | 445436 | 459454 | 473314 | 459298 | 453850 | 461942 | 462549 | 471609 | 477477 | 495210 | 512080 | 517865 | 468943 | 490654 | 516726 | 507551 | 471705 | 509647 | 547920 | 585019 | 635209 | 650372 | 671319 | 708025 | 748614 | NA | NA | 3 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -1 | 0 | 1 | 0 | 0 | -2 | 0 | 0 | -6 | -1 | 0 | 0 | 0 | -11 | NA | 0.79 | 0 | 0 | 0 | 0.26 | 0 | 0 | 0 | 0 | 0 | 0.52 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -0.26 | 0 | 0.26 | 0 | 0 | -0.52 | 0 | 0 | -1.56 | -0.26 | 0 | 0 | 0 | -2.92 |
| Rhône | 69 | 292 | 292 | 285 | 285 | 285 | 286 | 288 | 290 | 285 | 286 | 287 | 292 | 292 | 292 | 294 | 296 | 296 | 297 | 297 | 298 | 298 | 298 | 299 | 299 | 299 | 299 | 299 | 297 | 293 | 293 | 293 | 293 | 293 | 267 | 324474 | 368504 | 422498 | 484879 | 517305 | 535399 | 579421 | 611131 | 656223 | 699307 | 714986 | 706270 | 738024 | 772795 | 806248 | 837524 | 870396 | 874855 | 890074 | 947029 | 986202 | 1029098 | 1089568 | 1070026 | 959052 | 1015681 | 1181597 | 1326383 | 1429647 | 1445208 | 1508966 | 1578869 | 1708671 | NA | NA | 0 | -7 | 0 | 0 | 1 | 2 | 2 | -5 | 1 | 1 | 5 | 0 | 0 | 2 | 2 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | -2 | -4 | 0 | 0 | 0 | 0 | -26 | NA | 0 | -2.4 | 0 | 0 | 0.35 | 0.7 | 0.69 | -1.72 | 0.35 | 0.35 | 1.74 | 0 | 0 | 0.68 | 0.68 | 0 | 0.34 | 0 | 0.34 | 0 | 0 | 0.34 | 0 | 0 | 0 | 0 | -0.67 | -1.35 | 0 | 0 | 0 | 0 | -8.87 |
| Haute-Saône | 70 | 641 | 630 | 583 | 583 | 582 | 582 | 584 | 584 | 584 | 584 | 584 | 584 | 584 | 584 | 584 | 584 | 584 | 584 | 584 | 584 | 584 | 584 | 584 | 584 | 584 | 584 | 584 | 581 | 544 | 545 | 546 | 545 | 546 | 540 | 288961 | 301048 | 308400 | 343464 | 343993 | 348036 | 345452 | 348124 | 312950 | 317724 | 318228 | 303604 | 304524 | 296361 | 291401 | 281300 | 273296 | 266991 | 264241 | 257945 | 228618 | 226567 | 219480 | 213064 | 202830 | 209529 | 208639 | 214385 | 222254 | 231962 | 229650 | 229732 | 239278 | NA | NA | -11 | -47 | 0 | -1 | 0 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -3 | -37 | 1 | 1 | -1 | 1 | -6 | NA | -1.72 | -7.46 | 0 | -0.17 | 0 | 0.34 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -0.51 | -6.37 | 0.18 | 0.18 | -0.18 | 0.18 | -1.1 |
| Saône-et-Loire | 71 | 609 | 607 | 602 | 576 | 575 | 575 | 574 | 574 | 576 | 577 | 577 | 580 | 589 | 589 | 589 | 590 | 589 | 589 | 589 | 589 | 589 | 589 | 589 | 590 | 590 | 590 | 589 | 586 | 571 | 573 | 574 | 573 | 573 | 565 | 452656 | 471457 | 498687 | 516696 | 536555 | 551587 | 564514 | 575154 | 571735 | 580869 | 598590 | 595714 | 614309 | 625589 | 625885 | 618523 | 621237 | 620360 | 613177 | 604445 | 554816 | 549240 | 538741 | 525676 | 506750 | 511182 | 535772 | 550362 | 569810 | 571852 | 559413 | 544893 | 554720 | NA | NA | -2 | -5 | -26 | -1 | 0 | -1 | 0 | 2 | 1 | 0 | 3 | 9 | 0 | 0 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | -1 | -3 | -15 | 2 | 1 | -1 | 0 | -8 | NA | -0.33 | -0.82 | -4.32 | -0.17 | 0 | -0.17 | 0 | 0.35 | 0.17 | 0 | 0.52 | 1.55 | 0 | 0 | 0.17 | -0.17 | 0 | 0 | 0 | 0 | 0 | 0 | 0.17 | 0 | 0 | -0.17 | -0.51 | -2.56 | 0.35 | 0.17 | -0.17 | 0 | -1.4 |
| Sarthe | 72 | 413 | 413 | 393 | 393 | 394 | 391 | 391 | 391 | 389 | 389 | 386 | 386 | 386 | 387 | 385 | 386 | 386 | 386 | 386 | 386 | 386 | 386 | 386 | 386 | 386 | 386 | 386 | 376 | 376 | 375 | 375 | 375 | 375 | 354 | 388046 | 410380 | 428065 | 457362 | 466888 | 470524 | 474876 | 473071 | 467193 | 466155 | 463619 | 446603 | 446239 | 438917 | 436111 | 429737 | 425077 | 422699 | 421470 | 419370 | 389235 | 387482 | 384619 | 388519 | 412214 | 420393 | 443019 | 461839 | 490385 | 504768 | 513654 | 529851 | 561050 | NA | NA | 0 | -20 | 0 | 1 | -3 | 0 | 0 | -2 | 0 | -3 | 0 | 0 | 1 | -2 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -10 | 0 | -1 | 0 | 0 | 0 | -21 | NA | 0 | -4.84 | 0 | 0.25 | -0.76 | 0 | 0 | -0.51 | 0 | -0.77 | 0 | 0 | 0.26 | -0.52 | 0.26 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -2.59 | 0 | -0.27 | 0 | 0 | 0 | -5.6 |
| Savoie | 73 | 326 | 326 | 326 | 326 | 325 | 325 | 325 | 325 | 325 | 325 | 326 | 327 | 327 | 328 | 328 | 328 | 329 | 329 | 330 | 330 | 330 | 330 | 330 | 330 | 330 | 330 | 328 | 324 | 304 | 304 | 305 | 305 | 305 | 273 | 223406 | 242649 | 264108 | 0 | 292412 | 0 | 280973 | 0 | 275725 | 274864 | 271114 | 268030 | 268361 | 266438 | 267428 | 263297 | 259790 | 254781 | 253297 | 247890 | 225234 | 231210 | 235544 | 239010 | 236119 | 252192 | 266678 | 288921 | 305118 | 323675 | 348261 | 373258 | 411007 | NA | NA | 0 | 0 | 0 | -1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -2 | -4 | -20 | 0 | 1 | 0 | 0 | -32 | NA | 0 | 0 | 0 | -0.31 | 0 | 0 | 0 | 0 | 0 | 0.31 | 0.31 | 0 | 0.31 | 0 | 0 | 0.3 | 0 | 0.3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -0.61 | -1.22 | -6.17 | 0 | 0.33 | 0 | 0 | -10.49 |
| Haute-Savoie | 74 | 309 | 309 | 303 | 302 | 306 | 316 | 306 | 273 | 306 | 309 | 310 | 313 | 314 | 314 | 314 | 314 | 314 | 314 | 314 | 314 | 315 | 315 | 315 | 315 | 315 | 315 | 314 | 307 | 291 | 292 | 292 | 293 | 293 | 278 | 194425 | 202661 | 233632 | 0 | 269601 | 0 | 283847 | 0 | 265529 | 265447 | 273536 | 273112 | 273801 | 274087 | 275018 | 268267 | 265872 | 263803 | 260617 | 255137 | 235568 | 245317 | 252794 | 259961 | 270564 | 293854 | 329230 | 378550 | 447795 | 494505 | 568286 | 631679 | 724795 | NA | NA | 0 | -6 | -1 | 4 | 10 | -10 | -33 | 33 | 3 | 1 | 3 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | -1 | -7 | -16 | 1 | 0 | 1 | 0 | -15 | NA | 0 | -1.94 | -0.33 | 1.32 | 3.27 | -3.16 | -10.78 | 12.09 | 0.98 | 0.32 | 0.97 | 0.32 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.32 | 0 | 0 | 0 | 0 | 0 | -0.32 | -2.23 | -5.21 | 0.34 | 0 | 0.34 | 0 | -5.12 |
| Paris | 75 | 10 | 10 | 10 | 12 | 12 | 12 | 12 | 12 | 12 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 559209 | 662015 | 677865 | 834655 | 981846 | 1032732 | 1188377 | 1233635 | 1467530 | 1696141 | 1825274 | 1851792 | 1988806 | 2269023 | 2344550 | 2447957 | 2536834 | 2714068 | 2763393 | 2888110 | 2906472 | 2871429 | 2891020 | 2829746 | 2725374 | 2850189 | 2790091 | 2590771 | 2299830 | 2176243 | 2152423 | 2125246 | 2262949 | NA | NA | 0 | 0 | 2 | 0 | 0 | 0 | 0 | 0 | -11 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | NA | 0 | 0 | 20 | 0 | 0 | 0 | 0 | 0 | -91.67 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 100 | 0 |
| Seine-Maritime | 76 | 988 | 988 | 933 | 761 | 759 | 758 | 758 | 759 | 759 | 758 | 755 | 758 | 758 | 758 | 758 | 758 | 759 | 759 | 759 | 759 | 758 | 758 | 758 | 758 | 758 | 757 | 756 | 752 | 745 | 745 | 745 | 745 | 744 | 706 | 630661 | 642362 | 637071 | 693777 | 711678 | 730114 | 749805 | 763681 | 760664 | 788854 | 769196 | 815817 | 798146 | 813809 | 833156 | 839645 | 837599 | 853633 | 863669 | 877176 | 880481 | 885106 | 905098 | 915444 | 845945 | 941474 | 1035661 | 1113808 | 1172743 | 1193108 | 1223429 | 1239138 | 1249907 | NA | NA | 0 | -55 | -172 | -2 | -1 | 0 | 1 | 0 | -1 | -3 | 3 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | -1 | 0 | 0 | 0 | 0 | -1 | -1 | -4 | -7 | 0 | 0 | 0 | -1 | -38 | NA | 0 | -5.57 | -18.44 | -0.26 | -0.13 | 0 | 0.13 | 0 | -0.13 | -0.4 | 0.4 | 0 | 0 | 0 | 0 | 0.13 | 0 | 0 | 0 | -0.13 | 0 | 0 | 0 | 0 | -0.13 | -0.13 | -0.53 | -0.93 | 0 | 0 | 0 | -0.13 | -5.11 |
| Seine-et-Marne | 77 | 561 | 560 | 556 | 556 | 555 | 529 | 527 | 527 | 527 | 527 | 528 | 529 | 530 | 530 | 530 | 530 | 530 | 530 | 533 | 533 | 534 | 534 | 534 | 534 | 534 | 533 | 533 | 531 | 514 | 514 | 514 | 514 | 514 | 507 | 299140 | 304068 | 302907 | 323394 | 326174 | 333088 | 340363 | 344840 | 341553 | 352408 | 354267 | 341661 | 347323 | 348991 | 355136 | 356709 | 359034 | 358325 | 361939 | 363561 | 349234 | 380017 | 406108 | 409311 | 407137 | 453438 | 524486 | 604342 | 755762 | 887112 | 1078166 | 1193767 | 1313414 | NA | NA | -1 | -4 | 0 | -1 | -26 | -2 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 3 | 0 | 1 | 0 | 0 | 0 | 0 | -1 | 0 | -2 | -17 | 0 | 0 | 0 | 0 | -7 | NA | -0.18 | -0.71 | 0 | -0.18 | -4.68 | -0.38 | 0 | 0 | 0 | 0.19 | 0.19 | 0.19 | 0 | 0 | 0 | 0 | 0 | 0.57 | 0 | 0.19 | 0 | 0 | 0 | 0 | -0.19 | 0 | -0.38 | -3.2 | 0 | 0 | 0 | 0 | -1.36 |
| Yvelines | 78 | 267 | 267 | 265 | 265 | 265 | 265 | 265 | 265 | 265 | 265 | 264 | 265 | 265 | 265 | 266 | 266 | 266 | 266 | 266 | 266 | 266 | 266 | 265 | 265 | 265 | 265 | 263 | 262 | 262 | 262 | 262 | 262 | 262 | 259 | 182493 | 186038 | 185312 | 190656 | 191668 | 203797 | 204803 | 201955 | 207244 | 218368 | 222880 | 251157 | 235511 | 236471 | 247910 | 250552 | 263462 | 270228 | 277753 | 297562 | 321240 | 367267 | 408282 | 427078 | 431616 | 519176 | 687827 | 854382 | 1082255 | 1196111 | 1307150 | 1354304 | 1407560 | NA | NA | 0 | -2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -1 | 0 | 0 | 0 | -2 | -1 | 0 | 0 | 0 | 0 | 0 | -3 | NA | 0 | -0.75 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -0.38 | 0.38 | 0 | 0 | 0.38 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -0.38 | 0 | 0 | 0 | -0.75 | -0.38 | 0 | 0 | 0 | 0 | 0 | -1.15 |
| Deux-Sèvres | 79 | 364 | 364 | 364 | 355 | 354 | 354 | 354 | 354 | 354 | 354 | 355 | 355 | 355 | 355 | 354 | 353 | 353 | 353 | 355 | 355 | 356 | 356 | 356 | 356 | 356 | 356 | 356 | 351 | 302 | 303 | 307 | 308 | 305 | 256 | 240991 | 252727 | 279174 | 294289 | 303478 | 309598 | 320059 | 322999 | 327140 | 327583 | 331699 | 330550 | 335884 | 349345 | 352988 | 353489 | 345932 | 341696 | 338728 | 336903 | 309356 | 309100 | 308138 | 308122 | 312038 | 312032 | 320316 | 325603 | 335829 | 342812 | 345965 | 344392 | 366339 | NA | NA | 0 | 0 | -9 | -1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | -1 | -1 | 0 | 0 | 2 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | -5 | -49 | 1 | 4 | 1 | -3 | -49 | NA | 0 | 0 | -2.47 | -0.28 | 0 | 0 | 0 | 0 | 0 | 0.28 | 0 | 0 | 0 | -0.28 | -0.28 | 0 | 0 | 0.57 | 0 | 0.28 | 0 | 0 | 0 | 0 | 0 | 0 | -1.4 | -13.96 | 0.33 | 1.32 | 0.33 | -0.97 | -16.07 |
| Somme | 80 | 845 | 844 | 841 | 833 | 832 | 830 | 829 | 830 | 830 | 830 | 831 | 831 | 833 | 834 | 834 | 834 | 834 | 834 | 834 | 834 | 834 | 834 | 833 | 833 | 833 | 833 | 833 | 817 | 783 | 783 | 783 | 783 | 787 | 777 | 457465 | 493791 | 507870 | 541477 | 550859 | 558213 | 568446 | 569082 | 565447 | 571058 | 571042 | 555594 | 555263 | 549515 | 547721 | 545365 | 542158 | 536773 | 531541 | 518961 | 451887 | 473105 | 465842 | 466750 | 440717 | 463519 | 487524 | 511491 | 538462 | 544570 | 547825 | 555551 | 572024 | NA | NA | -1 | -3 | -8 | -1 | -2 | -1 | 1 | 0 | 0 | 1 | 0 | 2 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -1 | 0 | 0 | 0 | 0 | -16 | -34 | 0 | 0 | 0 | 4 | -10 | NA | -0.12 | -0.36 | -0.95 | -0.12 | -0.24 | -0.12 | 0.12 | 0 | 0 | 0.12 | 0 | 0.24 | 0.12 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -0.12 | 0 | 0 | 0 | 0 | -1.92 | -4.16 | 0 | 0 | 0 | 0.51 | -1.27 |
| Tarn | 81 | 365 | 365 | 362 | 326 | 323 | 319 | 315 | 315 | 316 | 316 | 316 | 317 | 318 | 318 | 318 | 320 | 320 | 321 | 322 | 323 | 323 | 323 | 324 | 324 | 325 | 326 | 326 | 326 | 324 | 324 | 324 | 324 | 324 | 315 | 271980 | 295885 | 290467 | 334834 | 346614 | 351656 | 360679 | 363073 | 354832 | 353633 | 355513 | 352718 | 359232 | 359223 | 358757 | 347739 | 339827 | 332093 | 330533 | 324090 | 295588 | 301717 | 302994 | 297871 | 298117 | 308197 | 319560 | 332011 | 338024 | 339345 | 342723 | 343402 | 377157 | NA | NA | 0 | -3 | -36 | -3 | -4 | -4 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 2 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | -2 | 0 | 0 | 0 | 0 | -9 | NA | 0 | -0.82 | -9.94 | -0.92 | -1.24 | -1.25 | 0 | 0.32 | 0 | 0 | 0.32 | 0.32 | 0 | 0 | 0.63 | 0 | 0.31 | 0.31 | 0.31 | 0 | 0 | 0.31 | 0 | 0.31 | 0.31 | 0 | 0 | -0.61 | 0 | 0 | 0 | 0 | -2.78 |
| Tarn-et-Garonne | 82 | 249 | 213 | 198 | 191 | 192 | 192 | 192 | 192 | 193 | 193 | 194 | 194 | 194 | 194 | 194 | 194 | 194 | 195 | 195 | 195 | 195 | 195 | 195 | 195 | 195 | 195 | 195 | 195 | 195 | 195 | 195 | 195 | 198 | 198 | 219530 | 230524 | 238183 | 242250 | 242688 | 239313 | 242307 | 237810 | 234842 | 232551 | 228800 | 221610 | 221364 | 217056 | 214046 | 206596 | 200390 | 195669 | 188553 | 182537 | 159559 | 164191 | 164259 | 164629 | 167664 | 172379 | 175847 | 183572 | 183314 | 190485 | 200220 | 206034 | 240663 | NA | NA | -36 | -15 | -7 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 3 | 0 | NA | -14.46 | -7.04 | -3.54 | 0.52 | 0 | 0 | 0 | 0.52 | 0 | 0.52 | 0 | 0 | 0 | 0 | 0 | 0 | 0.52 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1.54 | 0 |
| Var | 83 | 148 | 147 | 147 | 149 | 147 | 143 | 142 | 142 | 143 | 143 | 144 | 145 | 145 | 145 | 145 | 145 | 147 | 148 | 148 | 148 | 149 | 149 | 150 | 151 | 151 | 153 | 154 | 154 | 153 | 153 | 153 | 153 | 153 | 153 | 217447 | 227215 | 243759 | 257953 | 256685 | 261769 | 284732 | 290240 | 306225 | 315284 | 308500 | 299534 | 295763 | 288577 | 283689 | 288336 | 309191 | 326684 | 324638 | 330755 | 322945 | 347932 | 377104 | 398662 | 370688 | 413012 | 469557 | 555926 | 626093 | 708331 | 815449 | 898441 | 1007303 | NA | NA | -1 | 0 | 2 | -2 | -4 | -1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 2 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 2 | 1 | 0 | -1 | 0 | 0 | 0 | 0 | 0 | NA | -0.68 | 0 | 1.36 | -1.34 | -2.72 | -0.7 | 0 | 0.7 | 0 | 0.7 | 0.69 | 0 | 0 | 0 | 0 | 1.38 | 0.68 | 0 | 0 | 0.68 | 0 | 0.67 | 0.67 | 0 | 1.32 | 0.65 | 0 | -0.65 | 0 | 0 | 0 | 0 | 0 |
| Vaucluse | 84 | 150 | 150 | 148 | 148 | 148 | 148 | 149 | 149 | 149 | 149 | 149 | 150 | 150 | 150 | 150 | 150 | 150 | 150 | 150 | 150 | 150 | 151 | 151 | 151 | 151 | 151 | 151 | 151 | 151 | 151 | 151 | 151 | 151 | 151 | 191421 | 205832 | 224431 | 239113 | 246071 | 251080 | 259154 | 264618 | 268994 | 268237 | 266091 | 263451 | 255703 | 244149 | 241787 | 235411 | 236313 | 236949 | 239178 | 238656 | 219602 | 230549 | 241689 | 245508 | 249838 | 268318 | 303536 | 353966 | 390446 | 427343 | 467075 | 499685 | 540065 | NA | NA | 0 | -2 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | NA | 0 | -1.33 | 0 | 0 | 0 | 0.68 | 0 | 0 | 0 | 0 | 0.67 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.67 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Vendée | 85 | 315 | 321 | 319 | 297 | 294 | 294 | 294 | 296 | 297 | 298 | 298 | 298 | 299 | 299 | 300 | 301 | 303 | 303 | 304 | 304 | 306 | 306 | 306 | 306 | 306 | 307 | 307 | 296 | 281 | 282 | 283 | 283 | 292 | 259 | 243420 | 268646 | 316587 | 330350 | 341011 | 352222 | 376184 | 383734 | 389683 | 395695 | 404473 | 401446 | 411740 | 421633 | 434808 | 442355 | 441735 | 441311 | 442777 | 438520 | 397292 | 395602 | 390396 | 389211 | 393784 | 395641 | 408928 | 421250 | 450641 | 483027 | 509356 | 539664 | 653359 | NA | NA | 6 | -2 | -22 | -3 | 0 | 0 | 2 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 2 | 0 | 1 | 0 | 2 | 0 | 0 | 0 | 0 | 1 | 0 | -11 | -15 | 1 | 1 | 0 | 9 | -33 | NA | 1.9 | -0.62 | -6.9 | -1.01 | 0 | 0 | 0.68 | 0.34 | 0.34 | 0 | 0 | 0.34 | 0 | 0.33 | 0.33 | 0.66 | 0 | 0.33 | 0 | 0.66 | 0 | 0 | 0 | 0 | 0.33 | 0 | -3.58 | -5.07 | 0.36 | 0.35 | 0 | 3.18 | -11.3 |
| Vienne | 86 | 343 | 345 | 306 | 300 | 300 | 299 | 298 | 296 | 296 | 296 | 296 | 300 | 300 | 300 | 300 | 300 | 300 | 300 | 300 | 300 | 300 | 300 | 300 | 300 | 298 | 298 | 298 | 297 | 274 | 281 | 281 | 281 | 281 | 266 | 240920 | 253048 | 260636 | 282631 | 288002 | 291016 | 308391 | 317305 | 322585 | 322028 | 324527 | 320594 | 330916 | 340295 | 342785 | 344355 | 338114 | 336343 | 333622 | 332277 | 306248 | 310474 | 303072 | 306820 | 313932 | 319208 | 331619 | 340256 | 357366 | 371428 | 379977 | 399024 | 426066 | NA | NA | 2 | -39 | -6 | 0 | -1 | -1 | -2 | 0 | 0 | 0 | 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -2 | 0 | 0 | -1 | -23 | 7 | 0 | 0 | 0 | -15 | NA | 0.58 | -11.3 | -1.96 | 0 | -0.33 | -0.33 | -0.67 | 0 | 0 | 0 | 1.35 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -0.67 | 0 | 0 | -0.34 | -7.74 | 2.55 | 0 | 0 | 0 | -5.34 |
| Haute-Vienne | 87 | 211 | 195 | 221 | 201 | 199 | 199 | 199 | 199 | 199 | 200 | 200 | 202 | 203 | 203 | 203 | 203 | 203 | 203 | 205 | 205 | 205 | 205 | 206 | 206 | 206 | 206 | 205 | 205 | 201 | 201 | 201 | 201 | 201 | 195 | 245145 | 243195 | 272330 | 285033 | 292984 | 292848 | 314513 | 319197 | 319788 | 320075 | 326037 | 322500 | 336061 | 349332 | 363182 | 372878 | 375724 | 381753 | 385732 | 384736 | 350235 | 351311 | 335873 | 333589 | 336313 | 324429 | 332514 | 341589 | 352149 | 355737 | 353593 | 353893 | 374849 | NA | NA | -16 | 26 | -20 | -2 | 0 | 0 | 0 | 0 | 1 | 0 | 2 | 1 | 0 | 0 | 0 | 0 | 0 | 2 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | -1 | 0 | -4 | 0 | 0 | 0 | 0 | -6 | NA | -7.58 | 13.33 | -9.05 | -1 | 0 | 0 | 0 | 0 | 0.5 | 0 | 1 | 0.5 | 0 | 0 | 0 | 0 | 0 | 0.99 | 0 | 0 | 0 | 0.49 | 0 | 0 | 0 | -0.49 | 0 | -1.95 | 0 | 0 | 0 | 0 | -2.99 |
| Vosges | 88 | 532 | 532 | 531 | 532 | 531 | 530 | 528 | 528 | 530 | 530 | 530 | 530 | 531 | 530 | 530 | 530 | 531 | 531 | 530 | 530 | 531 | 531 | 531 | 532 | 531 | 531 | 531 | 522 | 517 | 516 | 516 | 515 | 515 | 507 | 295475 | 319681 | 341373 | 378824 | 390091 | 396737 | 406876 | 0 | 385650 | 394644 | 396868 | 154360 | 407082 | 406862 | 413707 | 410196 | 421412 | 421104 | 429812 | 433914 | 383684 | 382100 | 377980 | 376926 | 342315 | 372523 | 380676 | 388201 | 397957 | 395769 | 386258 | 380952 | 380192 | NA | NA | 0 | -1 | 1 | -1 | -1 | -2 | 0 | 2 | 0 | 0 | 0 | 1 | -1 | 0 | 0 | 1 | 0 | -1 | 0 | 1 | 0 | 0 | 1 | -1 | 0 | 0 | -9 | -5 | -1 | 0 | -1 | 0 | -8 | NA | 0 | -0.19 | 0.19 | -0.19 | -0.19 | -0.38 | 0 | 0.38 | 0 | 0 | 0 | 0.19 | -0.19 | 0 | 0 | 0.19 | 0 | -0.19 | 0 | 0.19 | 0 | 0 | 0.19 | -0.19 | 0 | 0 | -1.69 | -0.96 | -0.19 | 0 | -0.19 | 0 | -1.55 |
| Yonne | 89 | 481 | 481 | 481 | 481 | 481 | 482 | 482 | 482 | 482 | 483 | 485 | 485 | 485 | 485 | 485 | 486 | 486 | 486 | 486 | 486 | 486 | 486 | 486 | 486 | 485 | 484 | 484 | 482 | 439 | 450 | 451 | 453 | 455 | 423 | 323727 | 325994 | 333905 | 353088 | 355437 | 361677 | 373624 | 379785 | 368131 | 370402 | 372131 | 362855 | 359070 | 357029 | 355364 | 344688 | 332656 | 321062 | 315179 | 303889 | 273118 | 277230 | 275755 | 271685 | 266014 | 266410 | 269826 | 283376 | 299851 | 311019 | 323096 | 333221 | 343377 | NA | NA | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 2 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -1 | -1 | 0 | -2 | -43 | 11 | 1 | 2 | 2 | -32 | NA | 0 | 0 | 0 | 0 | 0.21 | 0 | 0 | 0 | 0.21 | 0.41 | 0 | 0 | 0 | 0 | 0.21 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -0.21 | -0.21 | 0 | -0.41 | -8.92 | 2.51 | 0.22 | 0.44 | 0.44 | -7.03 |
| Territoire de Belfort | 90 | 106 | 106 | 106 | 106 | 106 | 106 | 106 | 106 | 106 | 106 | 106 | 106 | 106 | 106 | 106 | 106 | 106 | 106 | 106 | 106 | 106 | 106 | 106 | 106 | 106 | 106 | 106 | 106 | 99 | 101 | 101 | 102 | 102 | 101 | 37772 | 40511 | 44681 | 50785 | 52275 | 53215 | 56026 | 57345 | 54011 | 56336 | 56915 | 56781 | 68600 | 74244 | 79758 | 83670 | 88047 | 92304 | 95421 | 101386 | 94338 | 96594 | 99403 | 99497 | 86648 | 99427 | 109371 | 118450 | 128125 | 131999 | 134097 | 137408 | 142461 | NA | NA | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -7 | 2 | 0 | 1 | 0 | -1 | NA | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -6.6 | 2.02 | 0 | 0.99 | 0 | -0.98 |
| Essonne | 91 | 199 | 199 | 197 | 197 | 197 | 196 | 196 | 196 | 196 | 196 | 196 | 196 | 196 | 196 | 197 | 198 | 198 | 198 | 198 | 198 | 198 | 198 | 198 | 198 | 198 | 197 | 196 | 196 | 196 | 196 | 196 | 196 | 196 | 194 | 110593 | 113696 | 110431 | 118237 | 118680 | 120529 | 122496 | 123601 | 123295 | 127803 | 130485 | 131548 | 135919 | 140035 | 147693 | 151734 | 159506 | 164625 | 169659 | 177216 | 187193 | 228021 | 271102 | 286903 | 294878 | 350992 | 478862 | 673485 | 923063 | 988000 | 1084824 | 1134238 | 1208004 | NA | NA | 0 | -2 | 0 | 0 | -1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -1 | -1 | 0 | 0 | 0 | 0 | 0 | 0 | -2 | NA | 0 | -1.01 | 0 | 0 | -0.51 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.51 | 0.51 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -0.51 | -0.51 | 0 | 0 | 0 | 0 | 0 | 0 | -1.02 |
| Hauts-de-Seine | 92 | 31 | 31 | 31 | 31 | 31 | 31 | 31 | 31 | 31 | 31 | 32 | 32 | 32 | 32 | 33 | 33 | 34 | 34 | 34 | 35 | 35 | 35 | 36 | 36 | 36 | 36 | 36 | 36 | 36 | 36 | 36 | 36 | 36 | 36 | 36460 | 38665 | 41979 | 57437 | 66364 | 76306 | 88476 | 96625 | 126392 | 139197 | 175018 | 193308 | 208482 | 254928 | 293386 | 332076 | 386737 | 467391 | 529496 | 614862 | 724261 | 820716 | 949231 | 1019627 | 992859 | 1118020 | 1381805 | 1461619 | 1438930 | 1387039 | 1391658 | 1428881 | 1561745 | NA | NA | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | NA | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 3.23 | 0 | 0 | 0 | 3.12 | 0 | 3.03 | 0 | 0 | 2.94 | 0 | 0 | 2.86 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Seine-Saint-Denis | 93 | 36 | 36 | 36 | 36 | 36 | 36 | 36 | 36 | 36 | 36 | 36 | 38 | 38 | 38 | 38 | 38 | 39 | 39 | 40 | 40 | 40 | 40 | 40 | 40 | 40 | 40 | 40 | 40 | 40 | 40 | 40 | 40 | 40 | 40 | 28901 | 29370 | 29438 | 38391 | 39494 | 44154 | 45023 | 48067 | 56237 | 78236 | 100317 | 120954 | 138099 | 180412 | 207901 | 230992 | 262735 | 307329 | 349545 | 411443 | 504956 | 635806 | 769315 | 776395 | 729361 | 845231 | 1083724 | 1249606 | 1322127 | 1324301 | 1381197 | 1382861 | 1515983 | NA | NA | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | NA | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 5.56 | 0 | 0 | 0 | 0 | 2.63 | 0 | 2.56 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Val-de-Marne | 94 | 42 | 42 | 42 | 42 | 42 | 42 | 42 | 42 | 42 | 42 | 42 | 42 | 42 | 42 | 43 | 44 | 45 | 46 | 46 | 46 | 46 | 47 | 47 | 47 | 47 | 47 | 47 | 47 | 47 | 47 | 47 | 47 | 47 | 47 | 33471 | 30880 | 31801 | 44956 | 53581 | 59067 | 68014 | 70085 | 90810 | 90916 | 106836 | 120523 | 136612 | 161619 | 194938 | 213718 | 246363 | 288891 | 330320 | 386085 | 462212 | 559882 | 657334 | 685297 | 672037 | 767543 | 974962 | 1121319 | 1215713 | 1193655 | 1215538 | 1227250 | 1318537 | NA | NA | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | NA | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2.38 | 2.33 | 2.27 | 2.22 | 0 | 0 | 0 | 2.17 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Val-d’Oise | 95 | 188 | 186 | 186 | 187 | 186 | 183 | 183 | 184 | 184 | 183 | 184 | 185 | 185 | 185 | 185 | 185 | 185 | 185 | 185 | 185 | 185 | 186 | 186 | 186 | 186 | 187 | 185 | 185 | 185 | 185 | 185 | 185 | 185 | 184 | 102252 | 103387 | 101148 | 107645 | 105530 | 106368 | 107503 | 107008 | 108751 | 116265 | 122975 | 122052 | 129655 | 134859 | 143028 | 143387 | 154118 | 164962 | 178444 | 196599 | 227220 | 283256 | 353374 | 350487 | 344687 | 412658 | 548429 | 693269 | 840885 | 920598 | 1049598 | 1105464 | 1168892 | NA | NA | -2 | 0 | 1 | -1 | -3 | 0 | 1 | 0 | -1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | -2 | 0 | 0 | 0 | 0 | 0 | 0 | -1 | NA | -1.06 | 0 | 0.54 | -0.53 | -1.61 | 0 | 0.55 | 0 | -0.54 | 0.55 | 0.54 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.54 | 0 | 0 | 0 | 0.54 | -1.07 | 0 | 0 | 0 | 0 | 0 | 0 | -0.54 |
rm(evol_deps_affichage, nbr_col)
cassini_reduite <- cassini
nom_dep <- "France entière"
evol_nbr_com_reduit <- data.frame() # Création d'un objet pour récupérer les résultats de la base réduite
# Boucle pour exploiter les données date par date
for (label in labels_data_pop) {
annee <- substr(label, start =5, stop = nchar(label)-5) # On repère le n° de l'année en segmentant le label
sous_tableau_reduit <- subset(cassini_reduite, cassini_reduite[, label] == "pop" | cassini_reduite[, label] == "lac." | cassini_reduite[, label] == "abs.") # On crée un sous-tableau comptant uniquement les communes dont la population nous intéresse, à l'année donnée
# sous_tableau_reduit <- subset(cassini_reduite, cassini_reduite[, label] == "pop") # Juste avec les populations connues
nbr_com_reduit <- nrow(sous_tableau_reduit) # On compte le nombre de communes
pop_annee_dep <- sum(as.numeric(sous_tableau_reduit[, paste0("pop_", annee, "_val")]), na.rm=TRUE)
i_reduit <- c(annee, nbr_com_reduit, pop_annee_dep) # On compile les résultats totaux
evol_nbr_com_reduit <- rbind(evol_nbr_com_reduit, i_reduit, stringsAsFactors = FALSE)
}
# On traite à la main les deux années 2011 et 2021
# Pour 2011, on fait la liste des CODGEO unique de 2021 et on multiplie par leur nombre de communes fusionnantes (donne le nombre de communes en 2011)
# Pas très propre mais pas l'énergie de faire mieux là...
CODGEO_2021_reduit <- as.data.frame(unique(cassini_reduite$commune_mars_2021))
colnames(CODGEO_2021_reduit) <- "CODGEO_new"
# On joint pour avoir le nombre de communes fusionnantes
CODGEO_2021_reduit <- merge(df_new[c("CODGEO_new", "NbrComFus", "P09_POP")], CODGEO_2021_reduit, by = "CODGEO_new", all.y = TRUE)
# Pour les communes non fusionnantes, on indique qu'il y en a une
CODGEO_2021_reduit$NbrComFus[is.na(CODGEO_2021_reduit$NbrComFus)] <- 1
i_2011_reduit <- c(2011, sum(CODGEO_2021_reduit$NbrComFus), sum(CODGEO_2021_reduit$P09_POP))
evol_nbr_com_reduit <- rbind(evol_nbr_com_reduit, i_2011_reduit)
# Pour 2021, on liste simplement le nombre de CODGEO uniques de 2021 pour chacun des groupe
i_2021_reduit <- c(2021, length(unique(cassini_reduite$commune_mars_2021)), NA)
evol_nbr_com_reduit <- rbind(evol_nbr_com_reduit, i_2021_reduit)
colnames (evol_nbr_com_reduit) <- c("annees", "nbr_com", "population")
evol_nbr_com <- evol_nbr_com_reduit
# evol_nbr_com[c(1,2), 1] <- c(1795, 1800) # On modifie l'intitulé pour faciliter la représentation graphique
# Est désormais fait plus haut
# evol_nbr_com$annees[evol_nbr_com$annees == "an3"] <- 1795
# evol_nbr_com$annees[evol_nbr_com$annees == "an8"] <- 1800
evol_nbr_com[,1] <- as.numeric(evol_nbr_com[,1]) # On passe en numérique pour faciliter la représentation
evol_nbr_com[,2] <- as.numeric(evol_nbr_com[,2]) # Si on veut faire une seule colonne
evol_nbr_com[,3] <- as.numeric(evol_nbr_com[,3]) # Si on veut faire une seule colonne
# Calcul de l'évolution en valeur absolue du nombre de commune dans le département
evol_nbr_com$evol <- evol_nbr_com$nbr_com - lag(evol_nbr_com$nbr_com)
# Calcul du taux d'évolution
evol_nbr_com$tx_evol <- round(100 * (evol_nbr_com$nbr_com - lag(evol_nbr_com$nbr_com)) / lag(evol_nbr_com$nbr_com), 2)
# On compile les résultats du département en question
departement <- c(nom_dep, "", evol_nbr_com$nbr_com, evol_nbr_com$population, evol_nbr_com$evol, evol_nbr_com$tx_evol)
# On ajoute ces résultats dans le tableau global
evol_deps <- rbind (evol_deps, departement, stringsAsFactors = FALSE)
# ggplot(data=evol_nbr_com, aes(x=annees, y=nbr_com)) +
# geom_line() +
# scale_x_continuous (breaks = seq(1780, 2030, 20)) +
# labs(title="Évolution du nombre de communes en Aveyron", subtitle="1795-2021", x="", y = "", caption="Sources : cassini.ehess.fr, INSEE")
# Création d'un tableau en base 100 en 1800
nbr_col_select <- length(labels_data_pop)+2+2 # Indique la dernière colonne à sélectionner : nombre de recensements dans la base Cassini, + deux colonnes au début du tableau, + 2011 et 2021.
evol_deps[3:nbr_col_select] <- apply(evol_deps [, 3:nbr_col_select], 2, as.numeric)
evol_deps_100 <- evol_deps [, 1:nbr_col_select]
evol_deps_100[3:nbr_col_select] <- 100 * evol_deps_100[3:nbr_col_select] / evol_deps_100$`1800`
# On change le tableau de sens (inversion lignes/colonnes) pour faciliter l'exploitation
pr_graph <- as.data.frame(t(evol_deps_100))
# On met le nom des départements en nom de colonne
colnames(pr_graph) <- pr_graph[1,]
pr_graph <- pr_graph [3:nrow(pr_graph),]
# On met la date dans une colonne à part
pr_graph$Date <- row.names(pr_graph)
# Pour avoir un graphique complètement exploitable, on change la forme des données
pr_graph <- melt(pr_graph, id.vars = "Date")
pr_graph$Date <- as.numeric(pr_graph$Date)
pr_graph$value <- as.numeric(pr_graph$value)
ggplot(data=pr_graph, aes(x=Date, y = value)) +
geom_line(aes(color = variable)) +
scale_x_continuous (breaks = seq(1780, 2030, 20)) +
labs(title= "Communes par départements (base 100 = 1800)", subtitle="1800-2021", x="", y = "", caption="Sources : cassini.ehess.fr, INSEE")
Quelques départements connaissent des trajectoires assez hachées laissant penser à des problèmes de comptabilisation :
Côte-d’Or (21), qui perd presque 250 communes en 1836 (et les regagne ensuite) ;
Oise (60) avec une forte baisse en 1831.
Haute-Vienne (87) avec une forte baisse en 1820)
[Ci-dessous, remarques avant que la mention “abs.” soit prise en compte pour comptabiliser les communes] Pour certains départements, les fluctuations paraissent particulièrement brutales voire carrément incohérentes, par exemple lorsque d’un recensement sur l’autre on passe de plusieurs centaines de communes à… zéro.
Nécessité de regarder en détail les données des départements suivants :
Alpes-Maritimes (06) qui fait le yoyo ;
Charente (16) et la Loire-Atlantique qui n’ont aucune commune en 1836 mais stable avant et après ;
Côte-d’Or (21), qui perd presque 250 communes en 1836 (et les regagne ensuite) ;
Meurthe-et-Moselle (54) et Moselle (57) : évolutions très hachées ;
Orne (61) : n’a plus que 100 communes en 1831 et les regagne après ;
Savoie (73) et Haute-Savoie (74) : n’ont aucune commune en 1831, 1841 et 1851 (absence de transposition de recensements non français ?) ;
Vosges (88) : bizareries en 1851 (plus de communes) et 1872 (seulement une cinquantaine).
# Phases envisagées au départ par Nicolas Verdier :
# 1790-1837, 1838-1884, puis 1885-1970, puis 1970-2000, puis 2000-2023
# Phases retenues du fait des données par recensement :
evol_deps$evol_1800_1836 <- evol_deps$`1836` - evol_deps$`1800`
evol_deps$evol_1836_1886 <- evol_deps$`1886` - evol_deps$`1836`
evol_deps$evol_1886_1968 <- evol_deps$`1968` - evol_deps$`1886`
evol_deps$evol_1968_1999 <- evol_deps$`1999` - evol_deps$`1968`
evol_deps$evol_1999_2021 <- evol_deps$`2021` - evol_deps$`1999`
evol_deps$tx_evol_1800_1836 <- round(100 * (evol_deps$`1836` - evol_deps$`1800`) / evol_deps$`1800`, 2)
evol_deps$tx_evol_1836_1886 <- round(100 * (evol_deps$`1886` - evol_deps$`1836`) / evol_deps$`1836`, 2)
evol_deps$tx_evol_1886_1968 <- round(100 * (evol_deps$`1968` - evol_deps$`1886`) / evol_deps$`1886`, 2)
evol_deps$tx_evol_1968_1999 <- round(100 * (evol_deps$`1999` - evol_deps$`1968`) / evol_deps$`1968`, 2)
evol_deps$tx_evol_1999_2021 <- round(100 * (evol_deps$`2021` - evol_deps$`1999`) / evol_deps$`1999`, 2)
# colnames(evol_deps)
phases <- c("evol_1800_1836", "evol_1836_1886", "evol_1886_1968", "evol_1968_1999", "evol_1999_2021")
date_phases <- paste0(substr (phases, start = 6, stop = 9), "-", substr (phases, start = 11, stop = 14))
phase <- phases[1]
ShpDep_IdF <- subset (ShpDep, ShpDep$CODE_DEPT == "75" | ShpDep$CODE_DEPT == "77" | ShpDep$CODE_DEPT == "78" | ShpDep$CODE_DEPT == "91" |
ShpDep$CODE_DEPT == "92" | ShpDep$CODE_DEPT == "93" | ShpDep$CODE_DEPT == "94" | ShpDep$CODE_DEPT == "95")
for (phase in phases) {
date_phase <- paste0(substr(phase, start = 6, stop = 9), "-", substr(phase, start = 11, stop = 14))
# On extrait les données à la phase voulue pour simplifier la cartographie
pr_carte <- evol_deps[, c("Département", "CODE_DEPT", phase, paste0("tx_", phase))]
colnames(pr_carte) <- c("Département", "CODE_DEPT", "evol_abs", "tx_evol")
# Carte départementale présentant l'évolution du nombre de communes
# Si on veut exporter (remettre dev.off en fin de séquence)
# svg(paste0("figures/Evol nombre de communes par départements (", date_phases, ", taux).svg"))
plot(ShpDep, col = "grey", border = "white", axes = FALSE) # Fond de carte
# Carte choroplèthe en fonction de la superficie moyenne des communes dans le département
choroLayer(spdf = ShpDep, # SpatialPolygonsDataFrame
df = pr_carte, # data frame
spdfid = "CODE_DEPT",
dfid = "CODE_DEPT",
var = "tx_evol",
# Si on souhaite faire les groupes manuellement :
breaks = c(-60, -10, -5, 0, 5, 10, 30), # liste des seuils (hypothèses)
col = carto.pal(pal1 = "blue.pal", n1 = 3, pal2 = "red.pal", n2 = 3),
# Si on souhaite avoir des groupes par quantiles :
# col = carto.pal(pal1 = "sand.pal", n1 = 4), method = "quantile",
nclass = 6,
add=TRUE,
legend.pos = "topleft",
legend.title.txt = "Taux d'évolution du\nnombre de communes\nsur la période")
layoutLayer(title = paste0("Évolution du nombre de communes par départements (", date_phase, ")"), coltitle = "black",
sources = "Sources : INSEE, IGN, Cassini.", scale = NULL,
author = "G. Bideau", frame ="", col = NA)
# Ajout d'un carton pour la région parisienne
# Page claire pour aider sur la représentation graphique : https://sites.google.com/site/rgraphiques/realiser-des-graphiques-avec-le-logiciel-r/g%C3%A9rer-les-graphiques-combinaisons-forme-et-sauvegarde/combinaisons-graphiques
par(new = TRUE)
par(fig=c(0.6, 0.9, 0.05, 0.25)) # On indique où placer le carton
par(mar = c(0, 0, 0, 0)) # On réduit les marges au maximum
# par(mar = c(5.1, 4.1, 4.1, 2.1)) # Marges par défaut
plot(ShpDep_IdF, col = "grey", border = "white", axes = FALSE)
choroLayer(spdf = ShpDep_IdF, # SpatialPolygonsDataFrame
df = pr_carte, # data frame
spdfid = "CODE_DEPT",
dfid = "CODE_DEPT",
var = "tx_evol",
# Si on souhaite faire les groupes manuellement :
breaks = c(-60, -10, -5, 0, 5, 10, 30), # liste des seuils (hypothèses)
col = carto.pal(pal1 = "blue.pal", n1 = 3, pal2 = "red.pal", n2 = 3),
# Si on souhaite avoir des groupes par quantiles :
# col = carto.pal(pal1 = "sand.pal", n1 = 4), method = "quantile",
nclass = 6,
add=TRUE,
legend.pos = "n",
legend.title.txt = "Taux d'évolution du\nnombre de communes\nsur la période")
# dev.off()
par(fig=c(0, 1, 0, 1)) # On reprend les données initiales
par(mar = c(5.1, 4.1, 4.1, 2.1)) # Et les marges
# Carte départementale présentant l'évolution du nombre de communes en valeur absolue
# Création d'un champs adapté pour la cartographie
pr_carte$evol_abs_negatif <- 0 -pr_carte$evol_abs
pr_carte$evol_abs_negatif[pr_carte$evol_abs_negatif < 0] <- NA
# Si on veut exporter (remettre dev.off en fin de séquence)
# svg(paste0("figures/Evol nombre de communes par départements (", date_phases, ", valeurs absolues).svg"))
plot(ShpDep, col = "grey", border = "white", axes = FALSE) # Fond de carte
# Carte choroplèthe en fonction de la superficie moyenne des communes dans le département
choroLayer(spdf = ShpDep, # SpatialPolygonsDataFrame
df = pr_carte, # data frame
spdfid = "CODE_DEPT",
dfid = "CODE_DEPT",
var = "tx_evol",
# Si on souhaite faire les groupes manuellement :
breaks = c(-60, -10, -5, 0, 5, 10, 30), # liste des seuils (hypothèses)
col = carto.pal(pal1 = "blue.pal", n1 = 3, pal2 = "red.pal", n2 = 3),
# Si on souhaite avoir des groupes par quantiles :
# col = carto.pal(pal1 = "sand.pal", n1 = 4), method = "quantile",
nclass = 6,
add=TRUE,
legend.pos = "topleft",
legend.title.txt = "Taux d'évolution")
# On rajoute les cercles en fonction de l'évolution en valeur absolue
propSymbolsLayer(spdf = ShpDep,
df = pr_carte,
spdfid = "CODE_DEPT",
dfid = "CODE_DEPT",
var = "evol_abs_negatif",
inches = 0.2,
fixmax = 500,
# breakval = 0, # On précise une valeur tournant
symbols = "circle",
col = "blue",
# col2 = "red",
legend.pos = "left",
legend.title.txt = "\n\n\n\n\n\nNombre de communes\nsupprimées",
legend.style = "c",
legend.frame = FALSE,
add = TRUE)
layoutLayer(title = paste0("Évolution du nombre de communes par départements (", date_phase, ")"), coltitle = "black",
sources = "Sources : INSEE, IGN, Cassini, 2023.", scale = NULL, horiz = FALSE,
author = "G. Bideau", frame ="", col = NA)
# Ajout d'un carton pour la région parisienne
par(new = TRUE)
par(fig=c(0.6, 0.9, 0.05, 0.25)) # On indique où placer le carton
par(mar = c(0, 0, 0, 0)) # On réduit les marges au maximum
plot(ShpDep_IdF, col = "grey", border = "white", axes = FALSE)
choroLayer(spdf = ShpDep_IdF, # SpatialPolygonsDataFrame, pour l'IdF
df = pr_carte, # data frame
spdfid = "CODE_DEPT",
dfid = "CODE_DEPT",
var = "tx_evol",
# Si on souhaite faire les groupes manuellement :
breaks = c(-60, -10, -5, 0, 5, 10, 30), # liste des seuils (hypothèses)
col = carto.pal(pal1 = "blue.pal", n1 = 3, pal2 = "red.pal", n2 = 3),
# Si on souhaite avoir des groupes par quantiles :
# col = carto.pal(pal1 = "sand.pal", n1 = 4), method = "quantile",
nclass = 6,
add=TRUE, legend.pos = "n", )
# On rajoute les cercles en fonction de l'évolution en valeur absolue, pour l'IdF
propSymbolsLayer(spdf = ShpDep_IdF,
df = pr_carte,
spdfid = "CODE_DEPT",
dfid = "CODE_DEPT",
var = "evol_abs_negatif",
inches = 0.2,
fixmax = 500,
# breakval = 0, # On précise une valeur tournant
symbols = "circle",
col = "blue",
# col2 = "red",
legend.pos = "n",
add = TRUE)
# dev.off()
par(fig=c(0, 1, 0, 1)) # On reprend l'ensemble de la place pour les figures
par(mar = c(5.1, 4.1, 4.1, 2.1)) # Et les marges
}
Travail sur les arrondissements envissagé avec Nicolas Verdier mais en attente d’un travail sur l’assignation de chaque commune Cassini à une commune récente ou à un arrondissement.
Compilation données
Compilation qui a été bricolée par copié/collé, tout est à revérifier une fois qu’on aura un champs propre
liste_arrond <- sort(unique (cassini$departement_1999)) # Champ de la base Cassini à reprendre
num_arrond <- 21
# Création d'un tableau pour accueillir les données de l'ensemble des départements
evol_arrond <- data.frame()
for (num_arrond in liste_arrond) {
cassini_reduite <- subset(cassini, departement_1999 == num_arrond)
nom_dep <- dep$LIBELLE[dep$CODE_DEPT == num_arrond]
evol_nbr_com_reduit <- data.frame() # Création d'un objet pour récupérer les résultats de la base réduite
# Boucle pour exploiter les données date par date
for (label in labels_data_pop) {
annee <- substr(label, start =5, stop = nchar(label)-5) # On repère le n° de l'année en segmentant le label
sous_tableau_reduit <- subset(cassini_reduite, cassini_reduite[, label] == "pop" | cassini_reduite[, label] == "lac." | cassini_reduite[, label] == "abs.") # On crée un sous-tableau comptant uniquement les communes dont la population nous intéresse, à l'année donnée
# sous_tableau_reduit <- subset(cassini_reduite, cassini_reduite[, label] == "pop") # Juste avec les populations connues
nbr_com_reduit <- nrow(sous_tableau_reduit) # On compte le nombre de communes
pop_annee_dep <- sum(as.numeric(sous_tableau_reduit[, paste0("pop_", annee, "_val")]), na.rm=TRUE)
i_reduit <- c(annee, nbr_com_reduit, pop_annee_dep) # On compile les résultats totaux
evol_nbr_com_reduit <- rbind(evol_nbr_com_reduit, i_reduit, stringsAsFactors = FALSE)
}
# On traite à la main les deux années 2011 et 2021
# Pour 2011, on fait la liste des CODGEO unique de 2021 et on multiplie par leur nombre de communes fusionnantes (donne le nombre de communes en 2011)
# Pas très propre mais pas l'énergie de faire mieux là...
CODGEO_2021_reduit <- as.data.frame(unique(cassini_reduite$commune_mars_2021))
colnames(CODGEO_2021_reduit) <- "CODGEO_new"
# On joint pour avoir le nombre de communes fusionnantes
CODGEO_2021_reduit <- merge(df_new[c("CODGEO_new", "NbrComFus", "P09_POP")], CODGEO_2021_reduit, by = "CODGEO_new", all.y = TRUE)
# Pour les communes non fusionnantes, on indique qu'il y en a une
CODGEO_2021_reduit$NbrComFus[is.na(CODGEO_2021_reduit$NbrComFus)] <- 1
i_2011_reduit <- c(2011, sum(CODGEO_2021_reduit$NbrComFus), sum(CODGEO_2021_reduit$P09_POP))
evol_nbr_com_reduit <- rbind(evol_nbr_com_reduit, i_2011_reduit)
# Pour 2021, on liste simplement le nombre de CODGEO uniques de 2021 pour chacun des groupe
i_2021_reduit <- c(2021, length(unique(cassini_reduite$commune_mars_2021)), NA)
evol_nbr_com_reduit <- rbind(evol_nbr_com_reduit, i_2021_reduit)
colnames (evol_nbr_com_reduit) <- c("annees", "nbr_com", "population")
evol_nbr_com <- evol_nbr_com_reduit
# evol_nbr_com[c(1,2), 1] <- c(1795, 1800) # On modifie l'intitulé pour faciliter la représentation graphique
# Est désormais fait plus haut
# evol_nbr_com$annees[evol_nbr_com$annees == "an3"] <- 1795
# evol_nbr_com$annees[evol_nbr_com$annees == "an8"] <- 1800
evol_nbr_com[,1] <- as.numeric(evol_nbr_com[,1]) # On passe en numérique pour faciliter la représentation
evol_nbr_com[,2] <- as.numeric(evol_nbr_com[,2]) # Si on veut faire une seule colonne
evol_nbr_com[,3] <- as.numeric(evol_nbr_com[,3]) # Si on veut faire une seule colonne
# Calcul de l'évolution en valeur absolue du nombre de commune dans le département
evol_nbr_com$evol <- evol_nbr_com$nbr_com - lag(evol_nbr_com$nbr_com)
# Calcul du taux d'évolution
evol_nbr_com$tx_evol <- round(100 * (evol_nbr_com$nbr_com - lag(evol_nbr_com$nbr_com)) / lag(evol_nbr_com$nbr_com), 2)
# On compile les résultats du département en question
arrondissement <- c(num_arrond, evol_nbr_com$nbr_com, evol_nbr_com$evol, evol_nbr_com$tx_evol)
# On ajoute ces résultats dans le tableau global
evol_arrond <- rbind (arrondissement, departement, stringsAsFactors = FALSE)
rm(label, annee, nbr_com_reduit, sous_tableau_reduit, i_reduit, i_2021_reduit, CODGEO_2021_reduit, i_2011_reduit, graphique)
}
# Création d'une colonne identifiant les deux recensements en jeu dans les évolutions
evol_nbr_com$ident_evol <- paste0("evol_", lag(evol_nbr_com$annees), "_", evol_nbr_com$annees)
# On identifie les colonnes du tableau regroupant les données de tous les départements
colnames(evol_arrond) <- c(" Code Arrondissement ?? ", evol_nbr_com$annees, evol_nbr_com$ident_evol, paste0("tx_", evol_nbr_com$ident_evol))
Cartographie
# Phases envisagées au départ par Nicolas Verdier :
# 1790-1837, 1838-1884, puis 1885-1970, puis 1970-2000, puis 2000-2023
# Phases retenues du fait des données par recensement :
evol_deps$evol_1800_1836 <- evol_deps$`1836` - evol_deps$`1800`
evol_deps$evol_1836_1886 <- evol_deps$`1886` - evol_deps$`1836`
evol_deps$evol_1886_1968 <- evol_deps$`1968` - evol_deps$`1886`
evol_deps$evol_1968_1999 <- evol_deps$`1999` - evol_deps$`1968`
evol_deps$evol_1999_2021 <- evol_deps$`2021` - evol_deps$`1999`
evol_deps$tx_evol_1800_1836 <- round(100 * (evol_deps$`1836` - evol_deps$`1800`) / evol_deps$`1800`, 2)
evol_deps$tx_evol_1836_1886 <- round(100 * (evol_deps$`1886` - evol_deps$`1836`) / evol_deps$`1836`, 2)
evol_deps$tx_evol_1886_1968 <- round(100 * (evol_deps$`1968` - evol_deps$`1886`) / evol_deps$`1886`, 2)
evol_deps$tx_evol_1968_1999 <- round(100 * (evol_deps$`1999` - evol_deps$`1968`) / evol_deps$`1968`, 2)
evol_deps$tx_evol_1999_2021 <- round(100 * (evol_deps$`2021` - evol_deps$`1999`) / evol_deps$`1999`, 2)
# colnames(evol_deps)
phases <- c("evol_1800_1836", "evol_1836_1886", "evol_1886_1968", "evol_1968_1999", "evol_1999_2021")
date_phases <- paste0(substr (phases, start = 6, stop = 9), "-", substr (phases, start = 11, stop = 14))
phase <- phases[1]
# Pour faciliter la carte
# ShpDep <- as(dep, "Spatial")
ShpDep <- as_Spatial(dep) # Pose moins de problème
ShpDep_IdF <- subset (ShpDep, ShpDep$CODE_DEPT == "75" | ShpDep$CODE_DEPT == "77" | ShpDep$CODE_DEPT == "78" | ShpDep$CODE_DEPT == "91" |
ShpDep$CODE_DEPT == "92" | ShpDep$CODE_DEPT == "93" | ShpDep$CODE_DEPT == "94" | ShpDep$CODE_DEPT == "95")
for (phase in phases) {
date_phase <- paste0(substr(phase, start = 6, stop = 9), "-", substr(phase, start = 11, stop = 14))
# On extrait les données à la phase voulue pour simplifier la cartographie
pr_carte <- evol_deps[, c("Département", "CODE_DEPT", phase, paste0("tx_", phase))]
colnames(pr_carte) <- c("Département", "CODE_DEPT", "evol_abs", "tx_evol")
# Carte départementale présentant l'évolution du nombre de communes
# Si on veut exporter (remettre dev.off en fin de séquence)
# svg(paste0("figures/Evol nombre de communes par départements (", date_phases, ", taux).svg"))
plot(ShpDep, col = "grey", border = "white", axes = FALSE) # Fond de carte
# Carte choroplèthe en fonction de la superficie moyenne des communes dans le département
choroLayer(spdf = ShpDep, # SpatialPolygonsDataFrame
df = pr_carte, # data frame
spdfid = "CODE_DEPT",
dfid = "CODE_DEPT",
var = "tx_evol",
# Si on souhaite faire les groupes manuellement :
breaks = c(-60, -10, -5, 0, 5, 10, 30), # liste des seuils (hypothèses)
col = carto.pal(pal1 = "blue.pal", n1 = 3, pal2 = "red.pal", n2 = 3),
# Si on souhaite avoir des groupes par quantiles :
# col = carto.pal(pal1 = "sand.pal", n1 = 4), method = "quantile",
nclass = 6,
add=TRUE,
legend.pos = "topleft",
legend.title.txt = "Taux d'évolution du\nnombre de communes\nsur la période")
layoutLayer(title = paste0("Évolution du nombre de communes par départements (", date_phase, ")"), coltitle = "black",
sources = "Sources : INSEE, IGN, Cassini.", scale = NULL,
author = "G. Bideau", frame ="", col = NA)
# Ajout d'un carton pour la région parisienne
# Page claire pour aider sur la représentation graphique : https://sites.google.com/site/rgraphiques/realiser-des-graphiques-avec-le-logiciel-r/g%C3%A9rer-les-graphiques-combinaisons-forme-et-sauvegarde/combinaisons-graphiques
par(new = TRUE)
par(fig=c(0.7, 1, 0, 0.2)) # On indique où placer le carton
par(mar = c(0, 0, 0, 0)) # On réduit les marges au maximum
plot(ShpDep_IdF, col = "grey", border = "white", axes = FALSE)
choroLayer(spdf = ShpDep_IdF, # SpatialPolygonsDataFrame
df = pr_carte, # data frame
spdfid = "CODE_DEPT",
dfid = "CODE_DEPT",
var = "tx_evol",
# Si on souhaite faire les groupes manuellement :
breaks = c(-60, -10, -5, 0, 5, 10, 30), # liste des seuils (hypothèses)
col = carto.pal(pal1 = "blue.pal", n1 = 3, pal2 = "red.pal", n2 = 3),
# Si on souhaite avoir des groupes par quantiles :
# col = carto.pal(pal1 = "sand.pal", n1 = 4), method = "quantile",
nclass = 6,
add=TRUE,
legend.pos = "n",
legend.title.txt = "Taux d'évolution du\nnombre de communes\nsur la période")
# dev.off()
par(fig=c(0, 1, 0, 1)) # On indique où placer le carton
# Carte départementale présentant l'évolution du nombre de communes en valeur absolue
# Création d'un champs adapté pour la cartographie
pr_carte$evol_abs_negatif <- 0 -pr_carte$evol_abs
pr_carte$evol_abs_negatif[pr_carte$evol_abs_negatif < 0] <- NA
# Si on veut exporter (remettre dev.off en fin de séquence)
# svg(paste0("figures/Evol nombre de communes par départements (", date_phases, ", valeurs absolues).svg"))
plot(ShpDep, col = "grey", border = "white", axes = FALSE) # Fond de carte
# Carte choroplèthe en fonction de la superficie moyenne des communes dans le département
choroLayer(spdf = ShpDep, # SpatialPolygonsDataFrame
df = pr_carte, # data frame
spdfid = "CODE_DEPT",
dfid = "CODE_DEPT",
var = "tx_evol",
# Si on souhaite faire les groupes manuellement :
breaks = c(-60, -10, -5, 0, 5, 10, 30), # liste des seuils (hypothèses)
col = carto.pal(pal1 = "blue.pal", n1 = 3, pal2 = "red.pal", n2 = 3),
# Si on souhaite avoir des groupes par quantiles :
# col = carto.pal(pal1 = "sand.pal", n1 = 4), method = "quantile",
nclass = 6,
add=TRUE,
legend.pos = "topleft",
legend.title.txt = "Taux d'évolution")
# On rajoute les cercles en fonction de l'évolution en valeur absolue
propSymbolsLayer(spdf = ShpDep,
df = pr_carte,
spdfid = "CODE_DEPT",
dfid = "CODE_DEPT",
var = "evol_abs_negatif",
inches = 0.2,
fixmax = 500,
# breakval = 0, # On précise une valeur tournant
symbols = "circle",
col = "blue",
# col2 = "red",
legend.pos = "left",
legend.title.txt = "\n\n\n\n\n\nNombre de communes\nsupprimées",
legend.style = "c",
legend.frame = FALSE,
add = TRUE)
layoutLayer(title = paste0("Évolution du nombre de communes par départements (", date_phase, ")"), coltitle = "black",
sources = "Sources : INSEE, IGN, Cassini, 2023.", scale = NULL, horiz = FALSE,
author = "G. Bideau", frame ="", col = NA)
# Ajout d'un carton pour la région parisienne
par(new = TRUE)
par(fig=c(0.7, 1, 0, 0.2)) # On indique où placer le carton
par(mar = c(0, 0, 0, 0)) # On réduit les marges au maximum
plot(ShpDep_IdF, col = "grey", border = "white", axes = FALSE)
choroLayer(spdf = ShpDep_IdF, # SpatialPolygonsDataFrame, pour l'IdF
df = pr_carte, # data frame
spdfid = "CODE_DEPT",
dfid = "CODE_DEPT",
var = "tx_evol",
# Si on souhaite faire les groupes manuellement :
breaks = c(-60, -10, -5, 0, 5, 10, 30), # liste des seuils (hypothèses)
col = carto.pal(pal1 = "blue.pal", n1 = 3, pal2 = "red.pal", n2 = 3),
# Si on souhaite avoir des groupes par quantiles :
# col = carto.pal(pal1 = "sand.pal", n1 = 4), method = "quantile",
nclass = 6,
add=TRUE, legend.pos = "n", )
# On rajoute les cercles en fonction de l'évolution en valeur absolue, pour l'IdF
propSymbolsLayer(spdf = ShpDep_IdF,
df = pr_carte,
spdfid = "CODE_DEPT",
dfid = "CODE_DEPT",
var = "evol_abs_negatif",
inches = 0.2,
fixmax = 500,
# breakval = 0, # On précise une valeur tournant
symbols = "circle",
col = "blue",
# col2 = "red",
legend.pos = "n",
add = TRUE)
# dev.off()
}
On observe ici, département par département, le nombre de communes en fonction de certains seuils démographiques
labels_data_pop <- colnames(cassini[grep(pattern = "_info", colnames(cassini), ignore.case = FALSE)])
annees_recensement <- substr(labels_data_pop, start =5, stop = nchar(labels_data_pop)-5) # On repère le n° de l'année en segmentant le label
# On rajoute 2011 et 2021 (ce n'est pas prêt, les données n'ont pas été rajoutées dans la base Cassini)
# annees_recensement <- c(annees_recensement, 2011, 2021)
listeSeuils <- c(50, 100, 200, 500, 1000, 2000)
annee <- annees_recensement[1]
seuil <- listeSeuils[1]
for (annee in annees_recensement) {
results <- evol_deps[, c("CODE_DEPT", "Département", annee)]
temp <- cassini[, c("nom_cassini", paste0("pop_", annee, "_val"), paste0("pop_", annee, "_info"), "departement_1999")]
colnames(temp) <- c("nom_cassini", "pop", "info", "CODE_DEPT")
temp$pop <- as.numeric (temp$pop)
# Tableau présentant, par département, la qualité des données sur l'année étudiée, s'y reporter pour valider les données
table(temp$info, temp$CODE_DEPT)
for (seuil in listeSeuils) {
temp_sub <- subset(temp, temp$pop < seuil)
# On compte le nombre de communes par départements étant en-dessous du seuil fixé
temp2 <- data.frame(table(temp_sub$CODE_DEPT))
temp2$Var1 <- as.character(temp2$Var1)
temp2[nrow(temp2)+1,] <- c("", sum(as.numeric(temp2$Freq)))
colnames(temp2)<-c("CODE_DEPT", paste0("ComMoins", seuil, "hab_", annee))
temp2[,2] <- as.numeric (temp2[,2])
results <- merge(results, temp2, by = "CODE_DEPT", all.x = TRUE)
results[, paste0("PartComMoins", seuil, "hab_", annee)] = round((results[, paste0("ComMoins", seuil, "hab_", annee)] /
results[, annee] *100), 1)
# Calculs qui pourraient avoir de l'intérêt mais risquent d'alourdir le tableau donc laissés de côté.
# Si volonté de les intégrer, revoir la rédaction (adaptations nécessaires, par exemple i = seuil)
# results[, paste0("EvolNbrComMoins", i, "hab")] = results[, paste0("ComMoins", i, "habAp")] -
# results[, paste0("ComMoins", i, "habAv")] # Calcul de l'évolution en valeur absolue
# results[, paste0("EvolComMoins", i, "hab")] =
# round((
# (results[, paste0("ComMoins", i, "habAp")] - results[, paste0("ComMoins", i, "habAv")]) /
# results[, paste0("ComMoins", i, "habAv")] *100), 1) # Calcul du pourcentage d'évolutions du nombre de communes sous le seuil i
# results[, paste0("EvolPartComMoins", i, "hab")] =
# round((
# (results[, paste0("PartComMoins", i, "habAp")] - results[, paste0("PartComMoins", i, "habAv")]) / results[, paste0("PartComMoins", i, "habAv")]*100), 1) # calcul de l'évolution de la part des communes sous le seuil i
# Suite laissée de côté car pas adapté aux données Cassini (vient du fichier d'analyse des communes nouvelles)
# Pour calculer le nombre de communes sous le seuil i ayant fusionné
# temp3 <- subset(df2011, df2011$P09_POP < i & FUSION == "OUI")
# temp3 <- data.frame(table(temp3$CODE_DEPT))
# colnames(temp3)<-c("CODE_DEPT", paste0("ComFusMoins", i, "hab"))
# results <- merge(results, temp3, by = "CODE_DEPT", all.x = TRUE)
}
evol_deps <- merge(evol_deps, results[, c(1, 4:length(results))], by = "CODE_DEPT")
# evol_deps[is.na(evol_deps)] <- "0/NA" # Si on veut signaler les départements pour lesquels aucunes communes sous les seuils n'ont été repérées (car risque qu'il s'agisse d'une absence de données)
}
rm(temp, temp_sub, temp2, results)
# Export données
try(save(cassini, evol_deps, listeSeuils, annees_recensement, file = "nbr_communes_Fr_shiny/data/dataCassini.Rdata"))
st_write(obj = dep, dsn = "nbr_communes_Fr_shiny/data/geom.gpkg", layer = "dep", delete_layer = TRUE, quiet = TRUE)
# Test import données
dep <- st_read("nbr_communes_Fr_shiny/data/geom.gpkg", layer = "dep", quiet = TRUE)
load ("nbr_communes_Fr_shiny/data/dataCassini.Rdata")
departement <- evol_deps$Département[2]
liste_dep <- evol_deps$Département
# liste_dep <- liste_dep[1] # Pour n'afficher que les graphiques sur la France entière
# for (seuil in listeSeuils [c(1, 2, 4, 6)]) { Si on veut alléger les sorties
for (seuil in listeSeuils) {
for (departement in liste_dep) {
num_dep <- evol_deps$CODE_DEPT[evol_deps$Département == departement]
evol_dep <- subset(evol_deps, evol_deps$Département == departement)
# Graphique, pour chaque département, de l'évolution du nombre de communes sous certain seuil
colonnes_select <- colnames(evol_deps[grep(pattern = paste0("^ComMoins", seuil, "hab"), colnames(evol_deps), ignore.case = FALSE)])
pr_graph <- evol_dep[, colonnes_select]
colnames(pr_graph) <- substr (colnames(pr_graph), start = nchar(colnames(pr_graph))-3, stop = nchar(colnames(pr_graph)))
pr_graph <- melt(pr_graph)
pr_graph[,1] <- as.numeric(as.character(pr_graph[,1]))
colnames(pr_graph) <- c("annees", "nbr_com")
graphique <- ggplot(data=pr_graph, aes(x=annees, y=nbr_com)) +
geom_line() +
ylim(0, max(pr_graph$nbr_com)+50) +
scale_x_continuous (breaks = seq(1780, 2030, 20)) +
labs(title= paste0("Nombre de communes de moins de ", seuil, " hab. en ", departement, " (", num_dep, ")"), subtitle="1795-2021", x="", y = paste0("Nombre de communes de moins de ", seuil," habitants"), caption="Sources : cassini.ehess.fr, INSEE")
print(graphique)
colonnes_select <- colnames(evol_deps[grep(pattern = paste0("PartComMoins", seuil, "hab"), colnames(evol_deps), ignore.case = FALSE)])
pr_graph <- evol_dep[, colonnes_select]
colnames(pr_graph) <- substr (colnames(pr_graph), start = nchar(colnames(pr_graph))-3, stop = nchar(colnames(pr_graph)))
pr_graph <- melt(pr_graph)
pr_graph[,1] <- as.numeric(as.character(pr_graph[,1]))
colnames(pr_graph) <- c("annees", "prop_com")
graphique <- ggplot(data=pr_graph, aes(x=annees, y=prop_com)) +
geom_line() +
ylim(0, max(pr_graph$prop_com)+10) +
scale_x_continuous (breaks = seq(1780, 2030, 20)) +
labs(title= paste0("Proportion de communes de moins de ", seuil, " hab. en ", departement, " (", num_dep, ")"), subtitle="1795-2021", x="", y = paste0("Pourcentage de communes de moins de ", seuil," habitants"), caption="Sources : cassini.ehess.fr, INSEE")
print(graphique)
}
for (annee in annees_recensement) {
colonne_select <- colnames(evol_deps[grep(pattern = paste0("^ComMoins", seuil, "hab_", annee), colnames(evol_deps), ignore.case = FALSE)])
# NB : Ajouter "^" pour signifier un début de ligne, pour différencier PartComMoins et ^ComMoins
pr_repr <- evol_deps[, c("Département", "CODE_DEPT", colonne_select)]
colnames(pr_repr) <- c("Département", "CODE_DEPT", "Données")
plot(ShpDep, col = "grey", border = "white", axes = FALSE) # Fond de carte
# Carte choroplèthe en fonction de la superficie moyenne des communes dans le département
# On rajoute les cercles en fonction de l'évolution en valeur absolue
propSymbolsLayer(spdf = ShpDep,
df = pr_repr,
spdfid = "CODE_DEPT",
dfid = "CODE_DEPT",
var = "Données",
inches = 0.2,
# breakval = 0, # On précise une valeur tournant
symbols = "circle",
col = "blue",
# col2 = "red",
legend.pos = "left",
# legend.title.txt = "Nombre de communes sous le seuil",
legend.style = "c",
legend.frame = FALSE,
add = TRUE)
layoutLayer(title = paste0("Nombre de communes de moins de ", seuil, " habitants (", annee, ")"), coltitle = "black",
sources = "Sources : INSEE, IGN, Cassini, 2023.", scale = NULL, horiz = FALSE,
author = "G. Bideau", frame ="", col = NA)
# En regardant la part de communes
colonne_select <- colnames(evol_deps[grep(pattern = paste0("PartComMoins", seuil, "hab_", annee), colnames(evol_deps), ignore.case = FALSE)])
# NB : Ajouter "^" pour signifier un début de ligne, pour différencier PartComMoins et ^ComMoins
pr_repr <- evol_deps[, c("Département", "CODE_DEPT", colonne_select)]
colnames(pr_repr) <- c("Département", "CODE_DEPT", "Données")
plot(ShpDep, col = "grey", border = "white", axes = FALSE) # Fond de carte
# Carte choroplèthe en fonction de la superficie moyenne des communes dans le département
choroLayer(spdf = ShpDep, # SpatialPolygonsDataFrame
df = pr_repr, # data frame
spdfid = "CODE_DEPT",
dfid = "CODE_DEPT",
var = "Données",
# Si on souhaite faire les groupes manuellement :
# breaks = c(-60, -10, -5, 0, 5, 10, 30), # liste des seuils (hypothèses)
# col = carto.pal(pal1 = "blue.pal", n1 = 3, pal2 = "red.pal", n2 = 3),
# Si on souhaite avoir des groupes par quantiles :
# col = carto.pal(pal1 = "sand.pal", n1 = 4), method = "quantile",
nclass = 5,
col = carto.pal(pal1 = "blue.pal", n1 = 0, pal2 = "red.pal", n2 = 5),
add=TRUE,
legend.pos = "topleft",
legend.title.txt = "")
layoutLayer(title = paste0("Pourcentage de communes de moins de ", seuil, " habitants (", annee, ")"), coltitle = "black",
sources = "Sources : INSEE, IGN, Cassini, 2023.", scale = NULL, horiz = FALSE,
author = "G. Bideau", frame ="", col = NA)
}
}
# Calcul de quelques variables
dep <- merge (dep, evol_deps, by = "CODE_DEPT")
# Création d'une variable de surface
dep$surface <- st_area(dep) # Attention, unités : m²
dep$surface <- units::set_units(dep$surface, km^2) # On passe en km²
# Densité de communes en 1800 et en 2021
dep$dens_comm_1800 <- as.numeric(dep$`1800`/dep$surface)
dep$dens_comm_2021 <- as.numeric(dep$`2021`/dep$surface)
dep$dens_1800 <- dep$`1800`/as.numeric(dep$pop_1800)
dep$dens_2011 <- dep$`2011`/as.numeric(dep$pop_2011)
PourCAH <- merge (evol_deps_100, dep[, c("CODE_DEPT", "dens_comm_1800", "dens_comm_2021", "dens_1800", "dens_2011")])
# Préparation des données
PourCAH <- na.omit(PourCAH)
row.names(PourCAH) <- PourCAH$Département
PourCAH$Département <- NULL
PourCAH$CODE_DEPT <- NULL
PourCAH$`1800` <- NULL # Inutile car sert de base 100
PourCAH$geometry <- NULL
PourCAH <- scale(PourCAH)
NbrVariables <- ncol(PourCAH)
selecVarCAH <- colnames(PourCAH)
# Réalisation de la typologie
res.pca <- PCA(PourCAH, graph = FALSE)
#res.pca <- PCA(PourCAH, ncp = 5, graph = FALSE) # 50 % of cumulative variance
# res.hcpc <- HCPC(res.pca, graph = TRUE, method = "ward", metric = "euclidian") #Ici coupure à 8 classes pas trop mal
#res.hcpc <- HCPC(res.pca, graph = FALSE, nb.clust = 7, method = "ward", metric = "euclidian") #Pour faire la coupure de manière déterministe
res.hcpc <- agnes(res.pca$ind$coord, metric = "euclidiean", method = "ward")
# Réalisation du dendrogramme en passant par plot
dendro.hcpc <- as.dendrogram(res.hcpc)
plot(dendro.hcpc, leaflab = "none", ylab = "Dissimilarité")
inertie <- sort(res.hcpc$height, decreasing = TRUE)
plot(inertie[1:20], type = "s", xlab = "Nombre de classes", ylab = "Inertie")
# Affichage de différents graphiques pour aider au découpage
sortedHeight <- sort(res.hcpc$height^2, decreasing = TRUE)
plot(sortedHeight,
type = "h",
xlab = "Noeuds",
ylab = "Niveau d'agrégation")
relHeight <- sortedHeight / sum(sortedHeight) * 100
cumHeight <- cumsum(relHeight)
barplot(relHeight[1:30], names.arg = seq(1, 30, 1),
col = "black", border = "white", xlab = "Noeuds",
ylab = "Part de l'inertie totale (%)",
main = "Diagramme de niveaux")
# Coupure de l'arbre (k = nombre de classes)
nclass <- 4
cluspop <- cutree(res.hcpc, k = nclass)
# Valeurs absolues
NomsGroupesCAH <- paste ("Groupe",1 :nclass)
# On intègre ces données dans le tableau de départ
PourCAH <- as.data.frame(PourCAH, stringsAsFactors = FALSE)
PourCAH$Groupes <- factor(cluspop,
levels = 1:nclass,
labels = paste(NomsGroupesCAH))
PourCAH$Département <- row.names(PourCAH)
# On rajoute le numéro de département
PourCAH <- merge (PourCAH, evol_deps_100 [, c("Département", "CODE_DEPT")], by = "Département")
# Calcul de la moyenne des variables
clusProfile <- aggregate(PourCAH [, 1:NbrVariables],
by = list(PourCAH$Groupes),
mean)
colnames(clusProfile)[1] <- "Groupes"
clusLong <- melt(clusProfile, id.vars = "Groupes")
ggplot(clusLong) +
geom_bar(aes(x = variable, y = value, fill = Groupes),
stat = "identity") +
scale_fill_brewer() +
facet_wrap(~ Groupes) +
theme_bw()
ggplot(clusLong) +
geom_line(aes(x = variable, y = value, group = 1)) +
scale_fill_brewer() +
theme(axis.text.x = element_text(angle = 56, hjust = 1)) + # Ne marche pas ?
theme(strip.text.x = element_text(angle = 45, hjust = 1)) + # Ne marche pas ?
facet_wrap(~ Groupes) +
theme_bw()
# Cartographie
# Remettre groupes dans carto
typo <- merge(dep,PourCAH[ , c("CODE_DEPT","Groupes")], by.x = "CODE_DEPT", by.y = "CODE_DEPT")
# mf_export(x = typo, export = "svg", filename = "figures/TypoEspaceGeo.svg",
# width = 5, theme = "nevermind") # Si souhait d'export
par(mfrow = c(1, 1))
par(mar=c(0,0,1.2,0))
plot(st_geometry(dep), border = "#1A1A19",lwd = 1)
typoLayer(x = typo, var = "Groupes",
col = c("#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf"),
border = NA,
#legend.title = "Typologie des communes fusionnantes/nà partir de critères socio-économiques",
legend.title.cex = 0.7,
legend.values.cex = 0.6,
legend.pos = "left", add = T)
layoutLayer(title = "Typologie exploratoire des départements en fonction de l'évolution de leur nombre de communes",
author = "G. Bideau, 2023.",
tabtitle = TRUE, frame = FALSE, col = "white", coltitle = "black",
sources = "Sources : base Cassini, INSEE, IGN, 2023.")
# Ajout d'un carton pour la région parisienne # NE MARCHE PAS
# par(new = TRUE)
# par(fig=c(0.7, 1, 0, 0.2)) # On indique où placer le carton
# par(mar = c(0, 0, 0, 0)) # On réduit les marges au maximum
# typo_IdF <- subset ( typo, typo$CODE_DEPT == "75" | typo$CODE_DEPT == "77" | typo$CODE_DEPT == "78" | typo$CODE_DEPT == "91" |
# typo$CODE_DEPT == "92" | typo$CODE_DEPT == "93" | typo$CODE_DEPT == "94" | typo$CODE_DEPT == "95")
# typoLayer(x = typo_IdF, var = "Groupes",
# col = c("#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf"),
# border = NA,legend.pos = "na", add = T)
# par(fig=c(0, 1, 0, 1)) # On reprend l'ensemble de la place pour les figures
Étude exploratoire menée mi-juillet 2023. Laissée de côté à partir du moment ou boucle faite pour tous les départements.
# On sélectionne uniquement l'Aveyron
cassini_reduite <- subset(cassini, departement_1999 == "12")
evol_nbr_com_reduit <- data.frame() # Création d'un objet pour récupérer les résultats de la base réduite
# Boucle pour exploiter les données date par date
for (label in labels_data_pop) {
annee <- substr(label, start =5, stop = nchar(label)-5) # On repère le n° de l'année en segmentant le label
sous_tableau_reduit <- subset(cassini_reduite, cassini_reduite[, label] == "pop" | cassini_reduite[, label] == "lac.") # On crée un sous-tableau comptant uniquement les communes dont la population nous intéresse, à l'année donnée
# sous_tableau_reduit <- subset(cassini_reduite, cassini_reduite[, label] == "pop") # Juste avec les populations connues
nbr_com_reduit <- nrow(sous_tableau_reduit) # On compte le nombre de communes
i_reduit <- c(annee, nbr_com_reduit) # On compile les résultats totaux
evol_nbr_com_reduit <- rbind(evol_nbr_com_reduit, i_reduit, stringsAsFactors = FALSE)
}
# On traite à la main les deux années 2011 et 2021
# Pour 2011, on fait la liste des CODGEO unique de 2021 et on multiplie par leur nombre de communes fusionnantes (donne le nombre de communes en 2011)
# Pas très propre mais pas l'énergie de faire mieux là...
CODGEO_2021_reduit <- as.data.frame(unique(cassini_reduite$commune_mars_2021))
colnames(CODGEO_2021_reduit) <- "CODGEO_new"
# On joint pour avoir le nombre de communes fusionnantes
CODGEO_2021_reduit <- merge(df_new[c("CODGEO_new", "NbrComFus")], CODGEO_2021_reduit, by = "CODGEO_new", all.y = TRUE)
# Pour les communes non fusionnantes, on indique qu'il y en a une
CODGEO_2021_reduit$NbrComFus[is.na(CODGEO_2021_reduit$NbrComFus)] <- 1
i_2011_reduit <- c(2011, sum(CODGEO_2021_reduit$NbrComFus))
evol_nbr_com_reduit <- rbind(evol_nbr_com_reduit, i_2011_reduit)
# Pour 2021, on liste simplement le nombre de CODGEO uniques de 2021 pour chacun des groupe
i_2021_reduit <- c(2021, length(unique(cassini_reduite$commune_mars_2021)))
evol_nbr_com_reduit <- rbind(evol_nbr_com_reduit, i_2021_reduit)
colnames (evol_nbr_com_reduit) <- c("annees", "nbr_com")
evol_nbr_com <- evol_nbr_com_reduit
# evol_nbr_com[c(1,2), 1] <- c(1795, 1800) # On modifie l'intitulé pour faciliter la représentation graphique
evol_nbr_com$annees[evol_nbr_com$annees == "an3"] <- 1795
evol_nbr_com$annees[evol_nbr_com$annees == "an8"] <- 1800
evol_nbr_com[,1] <- as.numeric(evol_nbr_com[,1]) # On passe en numérique pour faciliter la représentation
evol_nbr_com[,2] <- as.numeric(evol_nbr_com[,2]) # Si on veut faire une seule colonne
ggplot(data=evol_nbr_com, aes(x=annees, y=nbr_com)) +
geom_line() +
scale_x_continuous (breaks = seq(1780, 2030, 20)) +
labs(title="Évolution du nombre de communes en Aveyron", subtitle="1795-2021", x="", y = "", caption="Sources : cassini.ehess.fr, INSEE")
ggplot(data=evol_nbr_com, aes(x=annees, y=nbr_com)) +
geom_line() +
ylim(0, 600) +
scale_x_continuous (breaks = seq(1780, 2030, 20)) +
labs(title="Évolution du nombre de communes en Aveyron", subtitle="1795-2021", x="", y = "", caption="Sources : cassini.ehess.fr, INSEE")
rm(label, annee, nbr_com_reduit, sous_tableau_reduit, i_reduit, i_2021_reduit, CODGEO_2021_reduit, i_2011_reduit)
Affichage ici de cartes réalisées dans le cadre des communes nouvelles.